{
  "_format": "hh-sol-artifact-1",
  "contractName": "BridgeToken",
  "sourceName": "contracts/pangolin-periphery/test/BridgeToken.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "AddSupportedChainId",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "supplyIncrement",
          "type": "uint256"
        }
      ],
      "name": "AddSwapToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBridgeRoleAddress",
          "type": "address"
        }
      ],
      "name": "MigrateBridgeRole",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "feeAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "feeAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "originTxId",
          "type": "bytes32"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "supplyDecrement",
          "type": "uint256"
        }
      ],
      "name": "RemoveSwapToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "Unwrap",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "addSupportedChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "supplyIncrement",
          "type": "uint256"
        }
      ],
      "name": "addSwapToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "chainIds",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newBridgeRoleAddress",
          "type": "address"
        }
      ],
      "name": "migrateBridgeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "feeAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "feeAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "originTxId",
          "type": "bytes32"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "supplyDecrement",
          "type": "uint256"
        }
      ],
      "name": "removeSwapToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "swapSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "unwrap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252600d81526c22bc30b6b83632902a37b5b2b760991b60208083019182528351808501909452600684526545584d502e6560d01b9084015281519192916200006591600391620001ce565b5080516200007b906004906020840190620001ce565b505060058054601260ff1990911617905550620000a6600633620000e1602090811b6200119f17901c565b6000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805460ff191660011790556200027a565b620000ed828262000165565b1562000140576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001ae5760405162461bcd60e51b815260040180806020018281038252602281526020018062001ceb6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000206576000855562000251565b82601f106200022157805160ff191683800117855562000251565b8280016001018555821562000251579182015b828111156200025157825182559160200191906001019062000234565b506200025f92915062000263565b5090565b5b808211156200025f576000815560010162000264565b611a61806200028a6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636e286671116100d8578063a457c2d71161008c578063d004f0f711610066578063d004f0f7146104c4578063dd62ed3e146104f0578063eff038301461051e57610182565b8063a457c2d714610446578063a9059cbb14610472578063ab32dbb71461049e57610182565b806379cc6790116100bd57806379cc6790146103e65780637c38b4571461041257806395d89b411461043e57610182565b80636e2866711461039d57806370a08231146103c057610182565b8063313ce5671161013a5780635d9898d3116101145780635d9898d31461031a57806366de3b361461034057806367fc19bb1461035d57610182565b8063313ce567146102b157806339509351146102cf57806342966c68146102fb57610182565b806318160ddd1161016b57806318160ddd1461024457806321d930901461025e57806323b872dd1461027b57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61054a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102306004803603604081101561021a57600080fd5b506001600160a01b0381351690602001356105e0565b604080519115158252519081900360200190f35b61024c6105fd565b60408051918252519081900360200190f35b6102306004803603602081101561027457600080fd5b5035610603565b6102306004803603606081101561029157600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b6102b961069f565b6040805160ff9092168252519081900360200190f35b610230600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356106a4565b6103186004803603602081101561031157600080fd5b50356106f2565b005b6103186004803603602081101561033057600080fd5b50356001600160a01b0316610706565b6103186004803603602081101561035657600080fd5b50356107a7565b610318600480360360a081101561037357600080fd5b506001600160a01b03813581169160208101359160408201351690606081013590608001356108bd565b610318600480360360408110156103b357600080fd5b5080359060200135610982565b61024c600480360360208110156103d657600080fd5b50356001600160a01b0316610a87565b610318600480360360408110156103fc57600080fd5b506001600160a01b038135169060200135610aa2565b6103186004803603604081101561042857600080fd5b506001600160a01b038135169060200135610afc565b61018f610ce8565b6102306004803603604081101561045c57600080fd5b506001600160a01b038135169060200135610d49565b6102306004803603604081101561048857600080fd5b506001600160a01b038135169060200135610db1565b61024c600480360360208110156104b457600080fd5b50356001600160a01b0316610dc5565b610318600480360360408110156104da57600080fd5b506001600160a01b038135169060200135610de3565b61024c6004803603604081101561050657600080fd5b506001600160a01b0381358116916020013516610fec565b6103186004803603604081101561053457600080fd5b506001600160a01b038135169060200135611017565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b820191906000526020600020905b8154815290600101906020018083116105b957829003601f168201915b5050505050905090565b60006105f46105ed611220565b8484611224565b50600192915050565b60025490565b60086020526000908152604090205460ff1681565b6000610625848484611310565b61069584610631611220565b6106908560405180606001604052806028815260200161192f602891396001600160a01b038a1660009081526001602052604081209061066f611220565b6001600160a01b03168152602081019190915260400160002054919061146b565b611224565b5060019392505050565b601290565b60006105f46106b1611220565b8461069085600160006106c2611220565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611502565b6107036106fd611220565b82611563565b50565b61071160063361165f565b610752576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61075d6006336116c6565b61076860068261119f565b604080516001600160a01b038316815290517f871b00a4e20f8436702d0174eb87d84d7cd1dd5c34d4bb1b4e75438b3398d5129181900360200190a150565b6107b260063361165f565b6107f3576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b4681811415610849576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206164642063757272656e7420636861696e2049442e00000000604482015290519081900360640190fd5b60008281526008602052604090205460ff1615156001141561086b5750610703565b600082815260086020908152604091829020805460ff19166001179055815184815291517f677e2d9a4ed9201aa86725fef875137fc53876e6b68036b974404762682bd1229281900390910190a15050565b6108c860063361165f565b610909576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b610913858561172d565b811561092357610923838361172d565b604080516001600160a01b03808816825260208201879052851681830152606081018490526080810183905290517f918d77674bb88eaf75afb307c9723ea6037706de68d6fc07dd0c6cba423a52509181900360a00190a15050505050565b3233146109d6576040805162461bcd60e51b815260206004820152601d60248201527f436f6e74726163742063616c6c73206e6f7420737570706f727465642e000000604482015290519081900360640190fd5b60008181526008602052604090205460ff161515600114610a3e576040805162461bcd60e51b815260206004820152601760248201527f436861696e204944206e6f7420737570706f727465642e000000000000000000604482015290519081900360640190fd5b610a483383611563565b604080518381526020810183905281517f37a06799a3500428a773d00284aa706101f5ad94dae9ec37e1c3773aa54c3304929181900390910190a15050565b6001600160a01b031660009081526020819052604090205490565b6000610ad98260405180606001604052806024815260200161197960249139610ad286610acd611220565b610fec565b919061146b565b9050610aed83610ae7611220565b83611224565b610af78383611563565b505050565b610b0760063361165f565b610b58576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b610b618261181d565b610bb2576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610c1e576040805162461bcd60e51b815260206004820152601860248201527f5377617020746f6b656e206e6f7420737570706f727465640000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811015610c68576001600160a01b038216600090815260076020526040902060010180548290039055610ca0565b6001600160a01b0382166000908152600760205260408120805473ffffffffffffffffffffffffffffffffffffffff19168155600101555b604080516001600160a01b03841681526020810183905281517fd3b4025ff115b79bf2ec5a73c9c784ba8aa9f8f6ba9186b255895c1a9f9042a3929181900390910190a15050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b60006105f4610d56611220565b8461069085604051806060016040528060258152602001611a076025913960016000610d80611220565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061146b565b60006105f4610dbe611220565b8484611310565b6001600160a01b031660009081526007602052604090206001015490565b610dec8261181d565b610e3d576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f74206120636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610ea9576040805162461bcd60e51b815260206004820152601d60248201527f5377617020746f6b656e206973206e6f74206120636f6e74726163742e000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811115610f19576040805162461bcd60e51b815260206004820181905260248201527f5377617020616d6f756e74206973206d6f7265207468616e20737570706c792e604482015290519081900360640190fd5b6001600160a01b03808316600090815260076020526040808220600181018054869003905554815163079cc67960e41b815233600482015260248101869052915193169283926379cc6790926044808201939182900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050610fa3338361172d565b604080516001600160a01b03851681526020810184905281517f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f929181900390910190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61102260063361165f565b611063576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61106c8261181d565b6110bd576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416611135576040805180820182526001600160a01b038481168083526020808401868152600092835260079091529390209151825473ffffffffffffffffffffffffffffffffffffffff191691161781559051600190910155611157565b6001600160a01b03821660009081526007602052604090206001018054820190555b604080516001600160a01b03841681526020810183905281517f3e4fdfb0f47da284fe8b5b3a7e5d10b211e323c9a0c144c421ae1d211873f853929181900390910190a15050565b6111a9828261165f565b156111fb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b6001600160a01b0383166112695760405162461bcd60e51b81526004018080602001828103825260248152602001806119e36024913960400191505060405180910390fd5b6001600160a01b0382166112ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806118c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166113555760405162461bcd60e51b81526004018080602001828103825260258152602001806119be6025913960400191505060405180910390fd5b6001600160a01b03821661139a5760405162461bcd60e51b81526004018080602001828103825260238152602001806118816023913960400191505060405180910390fd5b6113a5838383610af7565b6113e2816040518060600160405280602681526020016118e8602691396001600160a01b038616600090815260208190526040902054919061146b565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546114119082611502565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166115a85760405162461bcd60e51b815260040180806020018281038252602181526020018061199d6021913960400191505060405180910390fd5b6115b482600083610af7565b6115f1816040518060600160405280602281526020016118a4602291396001600160a01b038516600090815260208190526040902054919061146b565b6001600160a01b0383166000908152602081905260409020556002546116179082611823565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166116a65760405162461bcd60e51b81526004018080602001828103825260228152602001806119576022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116d0828261165f565b61170b5760405162461bcd60e51b815260040180806020018281038252602181526020018061190e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038216611788576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61179460008383610af7565b6002546117a19082611502565b6002556001600160a01b0382166000908152602081905260409020546117c79082611502565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b60008282111561187a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122084ad88b882f8b752f719242bd312a8fafc4162cf305c7a6a9d6551e3b65727c964736f6c63430007060033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101825760003560e01c80636e286671116100d8578063a457c2d71161008c578063d004f0f711610066578063d004f0f7146104c4578063dd62ed3e146104f0578063eff038301461051e57610182565b8063a457c2d714610446578063a9059cbb14610472578063ab32dbb71461049e57610182565b806379cc6790116100bd57806379cc6790146103e65780637c38b4571461041257806395d89b411461043e57610182565b80636e2866711461039d57806370a08231146103c057610182565b8063313ce5671161013a5780635d9898d3116101145780635d9898d31461031a57806366de3b361461034057806367fc19bb1461035d57610182565b8063313ce567146102b157806339509351146102cf57806342966c68146102fb57610182565b806318160ddd1161016b57806318160ddd1461024457806321d930901461025e57806323b872dd1461027b57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61054a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102306004803603604081101561021a57600080fd5b506001600160a01b0381351690602001356105e0565b604080519115158252519081900360200190f35b61024c6105fd565b60408051918252519081900360200190f35b6102306004803603602081101561027457600080fd5b5035610603565b6102306004803603606081101561029157600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b6102b961069f565b6040805160ff9092168252519081900360200190f35b610230600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356106a4565b6103186004803603602081101561031157600080fd5b50356106f2565b005b6103186004803603602081101561033057600080fd5b50356001600160a01b0316610706565b6103186004803603602081101561035657600080fd5b50356107a7565b610318600480360360a081101561037357600080fd5b506001600160a01b03813581169160208101359160408201351690606081013590608001356108bd565b610318600480360360408110156103b357600080fd5b5080359060200135610982565b61024c600480360360208110156103d657600080fd5b50356001600160a01b0316610a87565b610318600480360360408110156103fc57600080fd5b506001600160a01b038135169060200135610aa2565b6103186004803603604081101561042857600080fd5b506001600160a01b038135169060200135610afc565b61018f610ce8565b6102306004803603604081101561045c57600080fd5b506001600160a01b038135169060200135610d49565b6102306004803603604081101561048857600080fd5b506001600160a01b038135169060200135610db1565b61024c600480360360208110156104b457600080fd5b50356001600160a01b0316610dc5565b610318600480360360408110156104da57600080fd5b506001600160a01b038135169060200135610de3565b61024c6004803603604081101561050657600080fd5b506001600160a01b0381358116916020013516610fec565b6103186004803603604081101561053457600080fd5b506001600160a01b038135169060200135611017565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b820191906000526020600020905b8154815290600101906020018083116105b957829003601f168201915b5050505050905090565b60006105f46105ed611220565b8484611224565b50600192915050565b60025490565b60086020526000908152604090205460ff1681565b6000610625848484611310565b61069584610631611220565b6106908560405180606001604052806028815260200161192f602891396001600160a01b038a1660009081526001602052604081209061066f611220565b6001600160a01b03168152602081019190915260400160002054919061146b565b611224565b5060019392505050565b601290565b60006105f46106b1611220565b8461069085600160006106c2611220565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611502565b6107036106fd611220565b82611563565b50565b61071160063361165f565b610752576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61075d6006336116c6565b61076860068261119f565b604080516001600160a01b038316815290517f871b00a4e20f8436702d0174eb87d84d7cd1dd5c34d4bb1b4e75438b3398d5129181900360200190a150565b6107b260063361165f565b6107f3576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b4681811415610849576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206164642063757272656e7420636861696e2049442e00000000604482015290519081900360640190fd5b60008281526008602052604090205460ff1615156001141561086b5750610703565b600082815260086020908152604091829020805460ff19166001179055815184815291517f677e2d9a4ed9201aa86725fef875137fc53876e6b68036b974404762682bd1229281900390910190a15050565b6108c860063361165f565b610909576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b610913858561172d565b811561092357610923838361172d565b604080516001600160a01b03808816825260208201879052851681830152606081018490526080810183905290517f918d77674bb88eaf75afb307c9723ea6037706de68d6fc07dd0c6cba423a52509181900360a00190a15050505050565b3233146109d6576040805162461bcd60e51b815260206004820152601d60248201527f436f6e74726163742063616c6c73206e6f7420737570706f727465642e000000604482015290519081900360640190fd5b60008181526008602052604090205460ff161515600114610a3e576040805162461bcd60e51b815260206004820152601760248201527f436861696e204944206e6f7420737570706f727465642e000000000000000000604482015290519081900360640190fd5b610a483383611563565b604080518381526020810183905281517f37a06799a3500428a773d00284aa706101f5ad94dae9ec37e1c3773aa54c3304929181900390910190a15050565b6001600160a01b031660009081526020819052604090205490565b6000610ad98260405180606001604052806024815260200161197960249139610ad286610acd611220565b610fec565b919061146b565b9050610aed83610ae7611220565b83611224565b610af78383611563565b505050565b610b0760063361165f565b610b58576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b610b618261181d565b610bb2576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610c1e576040805162461bcd60e51b815260206004820152601860248201527f5377617020746f6b656e206e6f7420737570706f727465640000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811015610c68576001600160a01b038216600090815260076020526040902060010180548290039055610ca0565b6001600160a01b0382166000908152600760205260408120805473ffffffffffffffffffffffffffffffffffffffff19168155600101555b604080516001600160a01b03841681526020810183905281517fd3b4025ff115b79bf2ec5a73c9c784ba8aa9f8f6ba9186b255895c1a9f9042a3929181900390910190a15050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105d65780601f106105ab576101008083540402835291602001916105d6565b60006105f4610d56611220565b8461069085604051806060016040528060258152602001611a076025913960016000610d80611220565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061146b565b60006105f4610dbe611220565b8484611310565b6001600160a01b031660009081526007602052604090206001015490565b610dec8261181d565b610e3d576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f74206120636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416610ea9576040805162461bcd60e51b815260206004820152601d60248201527f5377617020746f6b656e206973206e6f74206120636f6e74726163742e000000604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902060010154811115610f19576040805162461bcd60e51b815260206004820181905260248201527f5377617020616d6f756e74206973206d6f7265207468616e20737570706c792e604482015290519081900360640190fd5b6001600160a01b03808316600090815260076020526040808220600181018054869003905554815163079cc67960e41b815233600482015260248101869052915193169283926379cc6790926044808201939182900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050610fa3338361172d565b604080516001600160a01b03851681526020810184905281517f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f929181900390910190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61102260063361165f565b611063576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b61106c8261181d565b6110bd576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420636f6e74726163742e0000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526007602052604090205416611135576040805180820182526001600160a01b038481168083526020808401868152600092835260079091529390209151825473ffffffffffffffffffffffffffffffffffffffff191691161781559051600190910155611157565b6001600160a01b03821660009081526007602052604090206001018054820190555b604080516001600160a01b03841681526020810183905281517f3e4fdfb0f47da284fe8b5b3a7e5d10b211e323c9a0c144c421ae1d211873f853929181900390910190a15050565b6111a9828261165f565b156111fb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b6001600160a01b0383166112695760405162461bcd60e51b81526004018080602001828103825260248152602001806119e36024913960400191505060405180910390fd5b6001600160a01b0382166112ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806118c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166113555760405162461bcd60e51b81526004018080602001828103825260258152602001806119be6025913960400191505060405180910390fd5b6001600160a01b03821661139a5760405162461bcd60e51b81526004018080602001828103825260238152602001806118816023913960400191505060405180910390fd5b6113a5838383610af7565b6113e2816040518060600160405280602681526020016118e8602691396001600160a01b038616600090815260208190526040902054919061146b565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546114119082611502565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166115a85760405162461bcd60e51b815260040180806020018281038252602181526020018061199d6021913960400191505060405180910390fd5b6115b482600083610af7565b6115f1816040518060600160405280602281526020016118a4602291396001600160a01b038516600090815260208190526040902054919061146b565b6001600160a01b0383166000908152602081905260409020556002546116179082611823565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166116a65760405162461bcd60e51b81526004018080602001828103825260228152602001806119576022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116d0828261165f565b61170b5760405162461bcd60e51b815260040180806020018281038252602181526020018061190e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038216611788576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61179460008383610af7565b6002546117a19082611502565b6002556001600160a01b0382166000908152602081905260409020546117c79082611502565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3b151590565b60008282111561187a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122084ad88b882f8b752f719242bd312a8fafc4162cf305c7a6a9d6551e3b65727c964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
