{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExampleCrowdSale",
  "sourceName": "contracts/ExampleCrowdSale.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "priceFeed_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token_",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "wallet_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "usdRate_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "vestingEndDate_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "vestingVault_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EnforcedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ExpectedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "purchaser",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokensPurchased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WHITELISTED_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        }
      ],
      "name": "buyTokens",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "externalBuyTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundsRaised",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "weiAmount",
          "type": "uint256"
        }
      ],
      "name": "getTokenAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "getWeiAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensAvailable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wallet",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6080346101b457601f61108e38819003918201601f19168301916001600160401b038311848410176101b85780849260c0946040528339810103126101b457610047816101cc565b90610054602082016101cc565b60408201519092906001600160a01b038116908190036101b45760608301519161008560a0608086015195016101cc565b9460016002558215610161576001600160a01b0316908115610110576100aa336101e0565b5060018060a01b031660018060a01b0319600454161760045560018060a01b0319600354161760035560018060a01b0319600654161760065560055560085560018060a01b031660018060a01b03196009541617600955604051610e04908161026a8239f35b60405162461bcd60e51b8152602060048201526024808201527f43726f776473616c653a20746f6b656e20697320746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f43726f776473616c653a2077616c6c657420697320746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101b457565b6001600160a01b0381165f9081525f51602061106e5f395f51905f52602052604090205460ff16610264576001600160a01b03165f8181525f51602061106e5f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f9056fe6080806040526004361015610028575b5036156100205761001e610918565b005b61001e610918565b5f3560e01c90816301ffc9a71461065257508063248a9ca3146106275780632f2ff15d146105e957806336568abe146105a55780633f4ba83a14610551578063521eb273146105295780635c975abb146105085780635f1c37661461042057806360659a92146103995780636681b9fd1461037c5780637a3226ec1461034257806382d5d7ac146103245780638456cb59146102cd57806391d1485414610284578063a217fddf1461026a578063c2507ac114610244578063d547741f14610201578063ec8ac4d8146101315763fc0c546a14610105575f61000f565b3461012d575f36600319011261012d576003546040516001600160a01b039091168152602090f35b5f80fd5b602036600319011261012d576101456106ed565b61014d610b95565b610155610bb3565b61015d6109c1565b6101673482610bcd565b6101703461087d565b9061017d34600754610703565b60075561018a8282610c78565b60405191348352602083015260018060a01b0316907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a35f80808060018060a01b0360065416819034156101f7575b3491f1156101ec576001600255005b6040513d5f823e3d90fd5b6108fc91506101dd565b3461012d57604036600319011261012d5761001e6004356102206106d7565b9061023f61023a825f526001602052600160405f20015490565b610a30565b610af6565b3461012d57602036600319011261012d57602061026260043561087d565b604051908152f35b3461012d575f36600319011261012d5760206040515f8152f35b3461012d57604036600319011261012d5761029d6106d7565b6004355f52600160205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461012d575f36600319011261012d576102e5610bb3565b6102ed610bb3565b600160ff195f5416175f557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461012d57602036600319011261012d5760206102626004356107b9565b3461012d575f36600319011261012d5760206040517f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b498152f35b3461012d575f36600319011261012d576020600754604051908152f35b3461012d575f36600319011261012d576003546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa80156101ec575f906103ed575b602090604051908152f35b506020813d602011610418575b8161040760209383610724565b8101031261012d57602090516103e2565b3d91506103fa565b3461012d57604036600319011261012d576104396106ed565b60243590610445610b95565b61044d610bb3565b335f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff16156104f15761048c826107b9565b916104978383610bcd565b6104a383600754610703565b6007556104b08183610c78565b604051928352602083015260018060a01b0316907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a36001600255005b63e2517d3f60e01b5f52336004525f60245260445ffd5b3461012d575f36600319011261012d57602060ff5f54166040519015158152f35b3461012d575f36600319011261012d576006546040516001600160a01b039091168152602090f35b3461012d575f36600319011261012d57610569610b7a565b610571610b7a565b60ff195f54165f557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b3461012d57604036600319011261012d576105be6106d7565b336001600160a01b038216036105da5761001e90600435610af6565b63334bd91960e11b5f5260045ffd5b3461012d57604036600319011261012d5761001e6004356106086106d7565b9061062261023a825f526001602052600160405f20015490565b610a6a565b3461012d57602036600319011261012d5760206102626004355f526001602052600160405f20015490565b3461012d57602036600319011261012d576004359063ffffffff60e01b821680920361012d5760209163036c06d960e31b81149081156106c6575b811561069b575b5015158152f35b637965db0b60e01b8114915081156106b5575b5083610694565b6301ffc9a760e01b149050836106ae565b635c975abb60e01b8114915061068d565b602435906001600160a01b038216820361012d57565b600435906001600160a01b038216820361012d57565b9190820180921161071057565b634e487b7160e01b5f52601160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761074657604052565b634e487b7160e01b5f52604160045260245ffd5b519069ffffffffffffffffffff8216820361012d57565b908160a091031261012d576107858161075a565b916020820151916040810151916107a360806060840151930161075a565b90565b8181029291811591840414171561071057565b6004546001600160a01b0316806107de57506107da600a91600554906107a6565b0490565b60a060049160405192838092633fabe5a360e21b82525afa9081156101ec575f91610849575b506305f5e1008202918083046305f5e10014901517156107105760055461082a916107a6565b908115610835570490565b634e487b7160e01b5f52601260045260245ffd5b61086b915060a03d60a011610876575b6108638183610724565b810190610771565b50505090505f610804565b503d610859565b6004546001600160a01b0316806108ae5750600a810290808204600a1490151715610710576005546107a3916107a6565b9060a060049260405193848092633fabe5a360e21b82525afa9182156101ec576305f5e100926107da926108e9925f926108f2575b506107a6565b600554906107a6565b61090c91925060a03d60a011610876576108638183610724565b5050509050905f6108e3565b610920610b95565b610928610bb3565b6109306109c1565b61093a3433610bcd565b6109433461087d565b61094f34600754610703565b60075561095c8133610c78565b60405190348252602082015233907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a35f80808060018060a01b0360065416819034156109b7575b3491f1156101ec576001600255565b6108fc91506109a8565b335f9081527f9a12e7d163daa3679fdde2f980fb077ecd75d9611348bc15a31355afb064154e602052604090205460ff16156109f957565b63e2517d3f60e01b5f52336004527f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4960245260445ffd5b5f81815260016020908152604080832033845290915290205460ff1615610a545750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff16610af0575f8181526001602081815260408084206001600160a01b0396909616808552959091528220805460ff19169091179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff1615610af0575f8181526001602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff5f541615610b8657565b638dfc202b60e01b5f5260045ffd5b6002805414610ba45760028055565b633ee5aeb560e01b5f5260045ffd5b60ff5f5416610bbe57565b63d93c066560e01b5f5260045ffd5b6001600160a01b031615610c205715610be257565b60405162461bcd60e51b8152602060048201526016602482015275043726f776473616c653a20616d6f756e7420697320360541b6044820152606490fd5b60405162461bcd60e51b815260206004820152602a60248201527f43726f776473616c653a2062656e656669636961727920697320746865207a65604482015269726f206164647265737360b01b6064820152608490fd5b60085490919015610d045760018060a01b036009541691600854833b1561012d57604051637ba5e4eb60e11b81526001600160a01b039092166004830152602482015260448101829052915f908390606490829084905af19182156101ec57610cf292610cf4575b506009546001600160a01b0316610d09565b565b5f610cfe91610724565b5f610ce0565b610cf2915b60035460405163a9059cbb60e01b81526001600160a01b0392831660048201526024810193909352602091839160449183915f91165af19081156101ec575f91610d93575b5015610d5657565b60405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c881d5b9cdd58d8d95cdcd99d5b605a1b6044820152606490fd5b90506020813d602011610dc6575b81610dae60209383610724565b8101031261012d5751801515810361012d575f610d4e565b3d9150610da156fea2646970667358221220ef55f0807a163af08f10202b6f3f538637a261ce23345177bd6a98de7396c5cd64736f6c634300081e0033a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49",
  "deployedBytecode": "0x6080806040526004361015610028575b5036156100205761001e610918565b005b61001e610918565b5f3560e01c90816301ffc9a71461065257508063248a9ca3146106275780632f2ff15d146105e957806336568abe146105a55780633f4ba83a14610551578063521eb273146105295780635c975abb146105085780635f1c37661461042057806360659a92146103995780636681b9fd1461037c5780637a3226ec1461034257806382d5d7ac146103245780638456cb59146102cd57806391d1485414610284578063a217fddf1461026a578063c2507ac114610244578063d547741f14610201578063ec8ac4d8146101315763fc0c546a14610105575f61000f565b3461012d575f36600319011261012d576003546040516001600160a01b039091168152602090f35b5f80fd5b602036600319011261012d576101456106ed565b61014d610b95565b610155610bb3565b61015d6109c1565b6101673482610bcd565b6101703461087d565b9061017d34600754610703565b60075561018a8282610c78565b60405191348352602083015260018060a01b0316907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a35f80808060018060a01b0360065416819034156101f7575b3491f1156101ec576001600255005b6040513d5f823e3d90fd5b6108fc91506101dd565b3461012d57604036600319011261012d5761001e6004356102206106d7565b9061023f61023a825f526001602052600160405f20015490565b610a30565b610af6565b3461012d57602036600319011261012d57602061026260043561087d565b604051908152f35b3461012d575f36600319011261012d5760206040515f8152f35b3461012d57604036600319011261012d5761029d6106d7565b6004355f52600160205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461012d575f36600319011261012d576102e5610bb3565b6102ed610bb3565b600160ff195f5416175f557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461012d57602036600319011261012d5760206102626004356107b9565b3461012d575f36600319011261012d5760206040517f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b498152f35b3461012d575f36600319011261012d576020600754604051908152f35b3461012d575f36600319011261012d576003546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa80156101ec575f906103ed575b602090604051908152f35b506020813d602011610418575b8161040760209383610724565b8101031261012d57602090516103e2565b3d91506103fa565b3461012d57604036600319011261012d576104396106ed565b60243590610445610b95565b61044d610bb3565b335f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff16156104f15761048c826107b9565b916104978383610bcd565b6104a383600754610703565b6007556104b08183610c78565b604051928352602083015260018060a01b0316907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a36001600255005b63e2517d3f60e01b5f52336004525f60245260445ffd5b3461012d575f36600319011261012d57602060ff5f54166040519015158152f35b3461012d575f36600319011261012d576006546040516001600160a01b039091168152602090f35b3461012d575f36600319011261012d57610569610b7a565b610571610b7a565b60ff195f54165f557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b3461012d57604036600319011261012d576105be6106d7565b336001600160a01b038216036105da5761001e90600435610af6565b63334bd91960e11b5f5260045ffd5b3461012d57604036600319011261012d5761001e6004356106086106d7565b9061062261023a825f526001602052600160405f20015490565b610a6a565b3461012d57602036600319011261012d5760206102626004355f526001602052600160405f20015490565b3461012d57602036600319011261012d576004359063ffffffff60e01b821680920361012d5760209163036c06d960e31b81149081156106c6575b811561069b575b5015158152f35b637965db0b60e01b8114915081156106b5575b5083610694565b6301ffc9a760e01b149050836106ae565b635c975abb60e01b8114915061068d565b602435906001600160a01b038216820361012d57565b600435906001600160a01b038216820361012d57565b9190820180921161071057565b634e487b7160e01b5f52601160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761074657604052565b634e487b7160e01b5f52604160045260245ffd5b519069ffffffffffffffffffff8216820361012d57565b908160a091031261012d576107858161075a565b916020820151916040810151916107a360806060840151930161075a565b90565b8181029291811591840414171561071057565b6004546001600160a01b0316806107de57506107da600a91600554906107a6565b0490565b60a060049160405192838092633fabe5a360e21b82525afa9081156101ec575f91610849575b506305f5e1008202918083046305f5e10014901517156107105760055461082a916107a6565b908115610835570490565b634e487b7160e01b5f52601260045260245ffd5b61086b915060a03d60a011610876575b6108638183610724565b810190610771565b50505090505f610804565b503d610859565b6004546001600160a01b0316806108ae5750600a810290808204600a1490151715610710576005546107a3916107a6565b9060a060049260405193848092633fabe5a360e21b82525afa9182156101ec576305f5e100926107da926108e9925f926108f2575b506107a6565b600554906107a6565b61090c91925060a03d60a011610876576108638183610724565b5050509050905f6108e3565b610920610b95565b610928610bb3565b6109306109c1565b61093a3433610bcd565b6109433461087d565b61094f34600754610703565b60075561095c8133610c78565b60405190348252602082015233907f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b60403392a35f80808060018060a01b0360065416819034156109b7575b3491f1156101ec576001600255565b6108fc91506109a8565b335f9081527f9a12e7d163daa3679fdde2f980fb077ecd75d9611348bc15a31355afb064154e602052604090205460ff16156109f957565b63e2517d3f60e01b5f52336004527f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4960245260445ffd5b5f81815260016020908152604080832033845290915290205460ff1615610a545750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff16610af0575f8181526001602081815260408084206001600160a01b0396909616808552959091528220805460ff19169091179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181526001602090815260408083206001600160a01b038616845290915290205460ff1615610af0575f8181526001602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff5f541615610b8657565b638dfc202b60e01b5f5260045ffd5b6002805414610ba45760028055565b633ee5aeb560e01b5f5260045ffd5b60ff5f5416610bbe57565b63d93c066560e01b5f5260045ffd5b6001600160a01b031615610c205715610be257565b60405162461bcd60e51b8152602060048201526016602482015275043726f776473616c653a20616d6f756e7420697320360541b6044820152606490fd5b60405162461bcd60e51b815260206004820152602a60248201527f43726f776473616c653a2062656e656669636961727920697320746865207a65604482015269726f206164647265737360b01b6064820152608490fd5b60085490919015610d045760018060a01b036009541691600854833b1561012d57604051637ba5e4eb60e11b81526001600160a01b039092166004830152602482015260448101829052915f908390606490829084905af19182156101ec57610cf292610cf4575b506009546001600160a01b0316610d09565b565b5f610cfe91610724565b5f610ce0565b610cf2915b60035460405163a9059cbb60e01b81526001600160a01b0392831660048201526024810193909352602091839160449183915f91165af19081156101ec575f91610d93575b5015610d5657565b60405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c881d5b9cdd58d8d95cdcd99d5b605a1b6044820152606490fd5b90506020813d602011610dc6575b81610dae60209383610724565b8101031261012d5751801515810361012d575f610d4e565b3d9150610da156fea2646970667358221220ef55f0807a163af08f10202b6f3f538637a261ce23345177bd6a98de7396c5cd64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
