{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721PresetMinterPauserAutoIdUpgradeable",
  "sourceName": "contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoIdUpgradeable.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "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": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "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": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "baseTokenURI",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "account",
          "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": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "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": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "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": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612b86806100206000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636a6278421161010f578063a6487c53116100a2578063d539139311610071578063d539139314610416578063d547741f1461043d578063e63ab1e914610450578063e985e9c514610465576101f0565b8063a6487c53146103ca578063b88d4fde146103dd578063c87b56dd146103f0578063ca15c87314610403576101f0565b806391d14854116100de57806391d148541461039457806395d89b41146103a7578063a217fddf146103af578063a22cb465146103b7576101f0565b80636a6278421461035357806370a08231146103665780638456cb59146103795780639010d07c14610381576101f0565b80632f745c591161018757806342966c681161015657806342966c681461030e5780634f6ccce7146103215780635c975abb146103345780636352211e14610340576101f0565b80632f745c59146102cd57806336568abe146102e05780633f4ba83a146102f357806342842e0e146102fb576101f0565b806318160ddd116101c357806318160ddd1461027257806323b872dd14610284578063248a9ca3146102975780632f2ff15d146102ba576101f0565b806301ffc9a7146101f557806306fdde031461021d578063081812fc14610232578063095ea7b31461025d575b600080fd5b6102086102033660046126fc565b6104a1565b60405190151581526020015b60405180910390f35b6102256104b4565b60405161021491906128c5565b6102456102403660046126a1565b610546565b6040516001600160a01b039091168152602001610214565b61027061026b366004612678565b6105e0565b005b60fd545b604051908152602001610214565b61027061029236600461258a565b6106f6565b6102766102a53660046126a1565b60009081526065602052604090206001015490565b6102706102c83660046126b9565b610728565b6102766102db366004612678565b61074a565b6102706102ee3660046126b9565b6107e3565b610270610805565b61027061030936600461258a565b61089b565b61027061031c3660046126a1565b6108b6565b61027661032f3660046126a1565b610930565b61015f5460ff16610208565b61024561034e3660046126a1565b6109d1565b61027061036136600461253e565b610a48565b61027661037436600461253e565b610b06565b610270610b8d565b61024561038f3660046126db565b610c1f565b6102086103a23660046126b9565b610c3e565b610225610c69565b610276600081565b6102706103c536600461263e565b610c78565b6102706103d8366004612734565b610d4a565b6102706103eb3660046125c5565b610dc4565b6102256103fe3660046126a1565b610df6565b6102766104113660046126a1565b610ed0565b6102767f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61027061044b3660046126b9565b610ee7565b610276600080516020612b3183398151915281565b610208610473366004612558565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b60006104ac82610ef1565b90505b919050565b606060c980546104c390612a6e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef90612a6e565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b600081815260cb60205260408120546001600160a01b03166105c45760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815260cd60205260409020546001600160a01b031690565b60006105eb826109d1565b9050806001600160a01b0316836001600160a01b031614156106595760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105bb565b336001600160a01b038216148061067557506106758133610473565b6106e75760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105bb565b6106f18383610f16565b505050565b610701335b82610f84565b61071d5760405162461bcd60e51b81526004016105bb90612978565b6106f183838361107b565b6107328282611226565b60008281526097602052604090206106f1908261124d565b600061075583610b06565b82106107b75760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105bb565b506001600160a01b038216600090815260fb602090815260408083208484529091529020545b92915050565b6107ed8282611262565b60008281526097602052604090206106f190826112e0565b61081d600080516020612b31833981519152336103a2565b610891576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105bb565b6108996112f5565b565b6106f183838360405180602001604052806000815250610dc4565b6108bf336106fb565b6109245760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105bb565b61092d8161138a565b50565b600061093b60fd5490565b821061099e5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105bb565b60fd82815481106109bf57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600081815260cb60205260408120546001600160a01b0316806104ac5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105bb565b610a727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336103a2565b610ae45760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105bb565b610af781610af26101c35490565b611431565b61092d6101c380546001019055565b60006001600160a01b038216610b715760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105bb565b506001600160a01b0316600090815260cc602052604090205490565b610ba5600080516020612b31833981519152336103a2565b610c175760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105bb565b61089961157f565b6000828152609760205260408120610c3790836115fc565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060ca80546104c390612a6e565b6001600160a01b038216331415610cd15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105bb565b33600081815260ce602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d3e911515815260200190565b60405180910390a35050565b600054610100900460ff1680610d63575060005460ff16155b610d7f5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015610da1576000805461ffff19166101011790555b610dac848484611608565b8015610dbe576000805461ff00191690555b50505050565b610dce3383610f84565b610dea5760405162461bcd60e51b81526004016105bb90612978565b610dbe848484846116b4565b600081815260cb60205260409020546060906001600160a01b0316610e755760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105bb565b6000610e7f6116e7565b90506000815111610e9f5760405180602001604052806000815250610c37565b80610ea9846116f7565b604051602001610eba9291906127e4565b6040516020818303038152906040529392505050565b60008181526097602052604081206104ac90611812565b6107ed828261181c565b60006001600160e01b0319821663780e9d6360e01b14806104ac57506104ac82611842565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f4b826109d1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081815260cb60205260408120546001600160a01b0316610ffd5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105bb565b6000611008836109d1565b9050806001600160a01b0316846001600160a01b031614806110435750836001600160a01b031661103884610546565b6001600160a01b0316145b8061107357506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661108e826109d1565b6001600160a01b0316146110f65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016105bb565b6001600160a01b0382166111585760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105bb565b611163838383611882565b61116e600082610f16565b6001600160a01b038316600090815260cc60205260408120805460019290611197908490612a14565b90915550506001600160a01b038216600090815260cc602052604081208054600192906111c59084906129c9565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526065602052604090206001015461124381335b61188d565b6106f183836118f1565b6000610c37836001600160a01b038416611977565b6001600160a01b03811633146112d25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105bb565b6112dc82826119c6565b5050565b6000610c37836001600160a01b038416611a2d565b61015f5460ff1661133f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105bb565b61015f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000611395826109d1565b90506113a381600084611882565b6113ae600083610f16565b6001600160a01b038116600090815260cc602052604081208054600192906113d7908490612a14565b9091555050600082815260cb602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166114875760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105bb565b600081815260cb60205260409020546001600160a01b0316156114ec5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105bb565b6114f860008383611882565b6001600160a01b038216600090815260cc602052604081208054600192906115219084906129c9565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61015f5460ff16156115c65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105bb565b61015f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861136d3390565b6000610c378383611b4a565b600054610100900460ff1680611621575060005460ff16155b61163d5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff1615801561165f576000805461ffff19166101011790555b611667611b82565b61166f611b82565b611677611b82565b61167f611b82565b6116898484611bed565b611691611b82565b611699611b82565b6116a1611c82565b6116a9611b82565b610dac848484611cf8565b6116bf84848461107b565b6116cb84848484611db2565b610dbe5760405162461bcd60e51b81526004016105bb906128d8565b60606101c480546104c390612a6e565b60608161171c57506040805180820190915260018152600360fc1b60208201526104af565b8160005b8115611746578061173081612aa9565b915061173f9050600a836129e1565b9150611720565b60008167ffffffffffffffff81111561176f57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611799576020820181803683370190505b5090505b8415611073576117ae600183612a14565b91506117bb600a86612ac4565b6117c69060306129c9565b60f81b8183815181106117e957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061180b600a866129e1565b945061179d565b60006104ac825490565b600082815260656020526040902060010154611838813361123e565b6106f183836119c6565b60006001600160e01b031982166380ac58cd60e01b148061187357506001600160e01b03198216635b5e139f60e01b145b806104ac57506104ac82611ebf565b6106f1838383611ee4565b6118978282610c3e565b6112dc576118af816001600160a01b03166014611f57565b6118ba836020611f57565b6040516020016118cb929190612813565b60408051601f198184030181529082905262461bcd60e51b82526105bb916004016128c5565b6118fb8282610c3e565b6112dc5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119333390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546119be575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107dd565b5060006107dd565b6119d08282610c3e565b156112dc5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008181526001830160205260408120548015611b40576000611a51600183612a14565b8554909150600090611a6590600190612a14565b9050818114611ae6576000866000018281548110611a9357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611ac457634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b0557634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107dd565b60009150506107dd565b6000826000018281548110611b6f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600054610100900460ff1680611b9b575060005460ff16155b611bb75760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611bd9576000805461ffff19166101011790555b801561092d576000805461ff001916905550565b600054610100900460ff1680611c06575060005460ff16155b611c225760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611c44576000805461ffff19166101011790555b8251611c579060c99060208601906123f9565b508151611c6b9060ca9060208501906123f9565b5080156106f1576000805461ff0019169055505050565b600054610100900460ff1680611c9b575060005460ff16155b611cb75760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611cd9576000805461ffff19166101011790555b61015f805460ff19169055801561092d576000805461ff001916905550565b600054610100900460ff1680611d11575060005460ff16155b611d2d5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611d4f576000805461ffff19166101011790555b8151611d63906101c49060208501906123f9565b50611d706000335b612139565b611d9a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611d6b565b610dac600080516020612b3183398151915233611d6b565b60006001600160a01b0384163b15611eb457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611df6903390899088908890600401612888565b602060405180830381600087803b158015611e1057600080fd5b505af1925050508015611e40575060408051601f3d908101601f19168201909252611e3d91810190612718565b60015b611e9a573d808015611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b508051611e925760405162461bcd60e51b81526004016105bb906128d8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611073565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b14806104ac57506104ac82612143565b611eef838383612178565b61015f5460ff16156106f15760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105bb565b60606000611f668360026129f5565b611f719060026129c9565b67ffffffffffffffff811115611f9757634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fc1576020820181803683370190505b509050600360fc1b81600081518110611fea57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061204b8460026129f5565b6120569060016129c9565b90505b60018111156120ea576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061209857634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106120bc57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936120e381612a57565b9050612059565b508315610c375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105bb565b6107328282612235565b60006001600160e01b03198216637965db0b60e01b14806104ac57506301ffc9a760e01b6001600160e01b03198316146104ac565b6001600160a01b0383166121d3576121ce8160fd8054600083815260fe60205260408120829055600182018355919091527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca2800155565b6121f6565b816001600160a01b0316836001600160a01b0316146121f6576121f6838261223f565b6001600160a01b0382166122125761220d816122dc565b6106f1565b826001600160a01b0316826001600160a01b0316146106f1576106f182826123b5565b6112dc82826118f1565b6000600161224c84610b06565b6122569190612a14565b600083815260fc60205260409020549091508082146122a9576001600160a01b038416600090815260fb60209081526040808320858452825280832054848452818420819055835260fc90915290208190555b50600091825260fc602090815260408084208490556001600160a01b03909416835260fb81528383209183525290812055565b60fd546000906122ee90600190612a14565b600083815260fe602052604081205460fd805493945090928490811061232457634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060fd838154811061235357634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260fe909152604080822084905585825281205560fd80548061239957634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006123c083610b06565b6001600160a01b03909316600090815260fb60209081526040808320868452825280832085905593825260fc9052919091209190915550565b82805461240590612a6e565b90600052602060002090601f016020900481019282612427576000855561246d565b82601f1061244057805160ff191683800117855561246d565b8280016001018555821561246d579182015b8281111561246d578251825591602001919060010190612452565b5061247992915061247d565b5090565b5b80821115612479576000815560010161247e565b600067ffffffffffffffff808411156124ad576124ad612b04565b604051601f8501601f19908116603f011681019082821181831017156124d5576124d5612b04565b816040528093508581528686860111156124ee57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146104af57600080fd5b600082601f83011261252f578081fd5b610c3783833560208501612492565b60006020828403121561254f578081fd5b610c3782612508565b6000806040838503121561256a578081fd5b61257383612508565b915061258160208401612508565b90509250929050565b60008060006060848603121561259e578081fd5b6125a784612508565b92506125b560208501612508565b9150604084013590509250925092565b600080600080608085870312156125da578081fd5b6125e385612508565b93506125f160208601612508565b925060408501359150606085013567ffffffffffffffff811115612613578182fd5b8501601f81018713612623578182fd5b61263287823560208401612492565b91505092959194509250565b60008060408385031215612650578182fd5b61265983612508565b91506020830135801515811461266d578182fd5b809150509250929050565b6000806040838503121561268a578182fd5b61269383612508565b946020939093013593505050565b6000602082840312156126b2578081fd5b5035919050565b600080604083850312156126cb578182fd5b8235915061258160208401612508565b600080604083850312156126ed578182fd5b50508035926020909101359150565b60006020828403121561270d578081fd5b8135610c3781612b1a565b600060208284031215612729578081fd5b8151610c3781612b1a565b600080600060608486031215612748578283fd5b833567ffffffffffffffff8082111561275f578485fd5b61276b8783880161251f565b94506020860135915080821115612780578384fd5b61278c8783880161251f565b935060408601359150808211156127a1578283fd5b506127ae8682870161251f565b9150509250925092565b600081518084526127d0816020860160208601612a2b565b601f01601f19169290920160200192915050565b600083516127f6818460208801612a2b565b83519083019061280a818360208801612a2b565b01949350505050565b60007f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008252835161284b816017850160208801612a2b565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161287c816028840160208801612a2b565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128bb908301846127b8565b9695505050505050565b600060208252610c3760208301846127b8565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156129dc576129dc612ad8565b500190565b6000826129f0576129f0612aee565b500490565b6000816000190483118215151615612a0f57612a0f612ad8565b500290565b600082821015612a2657612a26612ad8565b500390565b60005b83811015612a46578181015183820152602001612a2e565b83811115610dbe5750506000910152565b600081612a6657612a66612ad8565b506000190190565b600181811c90821680612a8257607f821691505b60208210811415612aa357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612abd57612abd612ad8565b5060010190565b600082612ad357612ad3612aee565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461092d57600080fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203af1e9d2f22a8390dfa95d0220f98342dade4c87e1c500cd62fe25e77a605c5b64736f6c63430008030033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80636a6278421161010f578063a6487c53116100a2578063d539139311610071578063d539139314610416578063d547741f1461043d578063e63ab1e914610450578063e985e9c514610465576101f0565b8063a6487c53146103ca578063b88d4fde146103dd578063c87b56dd146103f0578063ca15c87314610403576101f0565b806391d14854116100de57806391d148541461039457806395d89b41146103a7578063a217fddf146103af578063a22cb465146103b7576101f0565b80636a6278421461035357806370a08231146103665780638456cb59146103795780639010d07c14610381576101f0565b80632f745c591161018757806342966c681161015657806342966c681461030e5780634f6ccce7146103215780635c975abb146103345780636352211e14610340576101f0565b80632f745c59146102cd57806336568abe146102e05780633f4ba83a146102f357806342842e0e146102fb576101f0565b806318160ddd116101c357806318160ddd1461027257806323b872dd14610284578063248a9ca3146102975780632f2ff15d146102ba576101f0565b806301ffc9a7146101f557806306fdde031461021d578063081812fc14610232578063095ea7b31461025d575b600080fd5b6102086102033660046126fc565b6104a1565b60405190151581526020015b60405180910390f35b6102256104b4565b60405161021491906128c5565b6102456102403660046126a1565b610546565b6040516001600160a01b039091168152602001610214565b61027061026b366004612678565b6105e0565b005b60fd545b604051908152602001610214565b61027061029236600461258a565b6106f6565b6102766102a53660046126a1565b60009081526065602052604090206001015490565b6102706102c83660046126b9565b610728565b6102766102db366004612678565b61074a565b6102706102ee3660046126b9565b6107e3565b610270610805565b61027061030936600461258a565b61089b565b61027061031c3660046126a1565b6108b6565b61027661032f3660046126a1565b610930565b61015f5460ff16610208565b61024561034e3660046126a1565b6109d1565b61027061036136600461253e565b610a48565b61027661037436600461253e565b610b06565b610270610b8d565b61024561038f3660046126db565b610c1f565b6102086103a23660046126b9565b610c3e565b610225610c69565b610276600081565b6102706103c536600461263e565b610c78565b6102706103d8366004612734565b610d4a565b6102706103eb3660046125c5565b610dc4565b6102256103fe3660046126a1565b610df6565b6102766104113660046126a1565b610ed0565b6102767f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61027061044b3660046126b9565b610ee7565b610276600080516020612b3183398151915281565b610208610473366004612558565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b60006104ac82610ef1565b90505b919050565b606060c980546104c390612a6e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef90612a6e565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b600081815260cb60205260408120546001600160a01b03166105c45760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815260cd60205260409020546001600160a01b031690565b60006105eb826109d1565b9050806001600160a01b0316836001600160a01b031614156106595760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105bb565b336001600160a01b038216148061067557506106758133610473565b6106e75760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105bb565b6106f18383610f16565b505050565b610701335b82610f84565b61071d5760405162461bcd60e51b81526004016105bb90612978565b6106f183838361107b565b6107328282611226565b60008281526097602052604090206106f1908261124d565b600061075583610b06565b82106107b75760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105bb565b506001600160a01b038216600090815260fb602090815260408083208484529091529020545b92915050565b6107ed8282611262565b60008281526097602052604090206106f190826112e0565b61081d600080516020612b31833981519152336103a2565b610891576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105bb565b6108996112f5565b565b6106f183838360405180602001604052806000815250610dc4565b6108bf336106fb565b6109245760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105bb565b61092d8161138a565b50565b600061093b60fd5490565b821061099e5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105bb565b60fd82815481106109bf57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600081815260cb60205260408120546001600160a01b0316806104ac5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105bb565b610a727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336103a2565b610ae45760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105bb565b610af781610af26101c35490565b611431565b61092d6101c380546001019055565b60006001600160a01b038216610b715760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105bb565b506001600160a01b0316600090815260cc602052604090205490565b610ba5600080516020612b31833981519152336103a2565b610c175760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105bb565b61089961157f565b6000828152609760205260408120610c3790836115fc565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060ca80546104c390612a6e565b6001600160a01b038216331415610cd15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105bb565b33600081815260ce602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d3e911515815260200190565b60405180910390a35050565b600054610100900460ff1680610d63575060005460ff16155b610d7f5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015610da1576000805461ffff19166101011790555b610dac848484611608565b8015610dbe576000805461ff00191690555b50505050565b610dce3383610f84565b610dea5760405162461bcd60e51b81526004016105bb90612978565b610dbe848484846116b4565b600081815260cb60205260409020546060906001600160a01b0316610e755760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105bb565b6000610e7f6116e7565b90506000815111610e9f5760405180602001604052806000815250610c37565b80610ea9846116f7565b604051602001610eba9291906127e4565b6040516020818303038152906040529392505050565b60008181526097602052604081206104ac90611812565b6107ed828261181c565b60006001600160e01b0319821663780e9d6360e01b14806104ac57506104ac82611842565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f4b826109d1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081815260cb60205260408120546001600160a01b0316610ffd5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105bb565b6000611008836109d1565b9050806001600160a01b0316846001600160a01b031614806110435750836001600160a01b031661103884610546565b6001600160a01b0316145b8061107357506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661108e826109d1565b6001600160a01b0316146110f65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016105bb565b6001600160a01b0382166111585760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105bb565b611163838383611882565b61116e600082610f16565b6001600160a01b038316600090815260cc60205260408120805460019290611197908490612a14565b90915550506001600160a01b038216600090815260cc602052604081208054600192906111c59084906129c9565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526065602052604090206001015461124381335b61188d565b6106f183836118f1565b6000610c37836001600160a01b038416611977565b6001600160a01b03811633146112d25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105bb565b6112dc82826119c6565b5050565b6000610c37836001600160a01b038416611a2d565b61015f5460ff1661133f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105bb565b61015f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000611395826109d1565b90506113a381600084611882565b6113ae600083610f16565b6001600160a01b038116600090815260cc602052604081208054600192906113d7908490612a14565b9091555050600082815260cb602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166114875760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105bb565b600081815260cb60205260409020546001600160a01b0316156114ec5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105bb565b6114f860008383611882565b6001600160a01b038216600090815260cc602052604081208054600192906115219084906129c9565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61015f5460ff16156115c65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105bb565b61015f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861136d3390565b6000610c378383611b4a565b600054610100900460ff1680611621575060005460ff16155b61163d5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff1615801561165f576000805461ffff19166101011790555b611667611b82565b61166f611b82565b611677611b82565b61167f611b82565b6116898484611bed565b611691611b82565b611699611b82565b6116a1611c82565b6116a9611b82565b610dac848484611cf8565b6116bf84848461107b565b6116cb84848484611db2565b610dbe5760405162461bcd60e51b81526004016105bb906128d8565b60606101c480546104c390612a6e565b60608161171c57506040805180820190915260018152600360fc1b60208201526104af565b8160005b8115611746578061173081612aa9565b915061173f9050600a836129e1565b9150611720565b60008167ffffffffffffffff81111561176f57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611799576020820181803683370190505b5090505b8415611073576117ae600183612a14565b91506117bb600a86612ac4565b6117c69060306129c9565b60f81b8183815181106117e957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061180b600a866129e1565b945061179d565b60006104ac825490565b600082815260656020526040902060010154611838813361123e565b6106f183836119c6565b60006001600160e01b031982166380ac58cd60e01b148061187357506001600160e01b03198216635b5e139f60e01b145b806104ac57506104ac82611ebf565b6106f1838383611ee4565b6118978282610c3e565b6112dc576118af816001600160a01b03166014611f57565b6118ba836020611f57565b6040516020016118cb929190612813565b60408051601f198184030181529082905262461bcd60e51b82526105bb916004016128c5565b6118fb8282610c3e565b6112dc5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119333390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546119be575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107dd565b5060006107dd565b6119d08282610c3e565b156112dc5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008181526001830160205260408120548015611b40576000611a51600183612a14565b8554909150600090611a6590600190612a14565b9050818114611ae6576000866000018281548110611a9357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611ac457634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b0557634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107dd565b60009150506107dd565b6000826000018281548110611b6f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600054610100900460ff1680611b9b575060005460ff16155b611bb75760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611bd9576000805461ffff19166101011790555b801561092d576000805461ff001916905550565b600054610100900460ff1680611c06575060005460ff16155b611c225760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611c44576000805461ffff19166101011790555b8251611c579060c99060208601906123f9565b508151611c6b9060ca9060208501906123f9565b5080156106f1576000805461ff0019169055505050565b600054610100900460ff1680611c9b575060005460ff16155b611cb75760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611cd9576000805461ffff19166101011790555b61015f805460ff19169055801561092d576000805461ff001916905550565b600054610100900460ff1680611d11575060005460ff16155b611d2d5760405162461bcd60e51b81526004016105bb9061292a565b600054610100900460ff16158015611d4f576000805461ffff19166101011790555b8151611d63906101c49060208501906123f9565b50611d706000335b612139565b611d9a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611d6b565b610dac600080516020612b3183398151915233611d6b565b60006001600160a01b0384163b15611eb457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611df6903390899088908890600401612888565b602060405180830381600087803b158015611e1057600080fd5b505af1925050508015611e40575060408051601f3d908101601f19168201909252611e3d91810190612718565b60015b611e9a573d808015611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b508051611e925760405162461bcd60e51b81526004016105bb906128d8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611073565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b14806104ac57506104ac82612143565b611eef838383612178565b61015f5460ff16156106f15760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105bb565b60606000611f668360026129f5565b611f719060026129c9565b67ffffffffffffffff811115611f9757634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fc1576020820181803683370190505b509050600360fc1b81600081518110611fea57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061204b8460026129f5565b6120569060016129c9565b90505b60018111156120ea576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061209857634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106120bc57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936120e381612a57565b9050612059565b508315610c375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105bb565b6107328282612235565b60006001600160e01b03198216637965db0b60e01b14806104ac57506301ffc9a760e01b6001600160e01b03198316146104ac565b6001600160a01b0383166121d3576121ce8160fd8054600083815260fe60205260408120829055600182018355919091527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca2800155565b6121f6565b816001600160a01b0316836001600160a01b0316146121f6576121f6838261223f565b6001600160a01b0382166122125761220d816122dc565b6106f1565b826001600160a01b0316826001600160a01b0316146106f1576106f182826123b5565b6112dc82826118f1565b6000600161224c84610b06565b6122569190612a14565b600083815260fc60205260409020549091508082146122a9576001600160a01b038416600090815260fb60209081526040808320858452825280832054848452818420819055835260fc90915290208190555b50600091825260fc602090815260408084208490556001600160a01b03909416835260fb81528383209183525290812055565b60fd546000906122ee90600190612a14565b600083815260fe602052604081205460fd805493945090928490811061232457634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060fd838154811061235357634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260fe909152604080822084905585825281205560fd80548061239957634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006123c083610b06565b6001600160a01b03909316600090815260fb60209081526040808320868452825280832085905593825260fc9052919091209190915550565b82805461240590612a6e565b90600052602060002090601f016020900481019282612427576000855561246d565b82601f1061244057805160ff191683800117855561246d565b8280016001018555821561246d579182015b8281111561246d578251825591602001919060010190612452565b5061247992915061247d565b5090565b5b80821115612479576000815560010161247e565b600067ffffffffffffffff808411156124ad576124ad612b04565b604051601f8501601f19908116603f011681019082821181831017156124d5576124d5612b04565b816040528093508581528686860111156124ee57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146104af57600080fd5b600082601f83011261252f578081fd5b610c3783833560208501612492565b60006020828403121561254f578081fd5b610c3782612508565b6000806040838503121561256a578081fd5b61257383612508565b915061258160208401612508565b90509250929050565b60008060006060848603121561259e578081fd5b6125a784612508565b92506125b560208501612508565b9150604084013590509250925092565b600080600080608085870312156125da578081fd5b6125e385612508565b93506125f160208601612508565b925060408501359150606085013567ffffffffffffffff811115612613578182fd5b8501601f81018713612623578182fd5b61263287823560208401612492565b91505092959194509250565b60008060408385031215612650578182fd5b61265983612508565b91506020830135801515811461266d578182fd5b809150509250929050565b6000806040838503121561268a578182fd5b61269383612508565b946020939093013593505050565b6000602082840312156126b2578081fd5b5035919050565b600080604083850312156126cb578182fd5b8235915061258160208401612508565b600080604083850312156126ed578182fd5b50508035926020909101359150565b60006020828403121561270d578081fd5b8135610c3781612b1a565b600060208284031215612729578081fd5b8151610c3781612b1a565b600080600060608486031215612748578283fd5b833567ffffffffffffffff8082111561275f578485fd5b61276b8783880161251f565b94506020860135915080821115612780578384fd5b61278c8783880161251f565b935060408601359150808211156127a1578283fd5b506127ae8682870161251f565b9150509250925092565b600081518084526127d0816020860160208601612a2b565b601f01601f19169290920160200192915050565b600083516127f6818460208801612a2b565b83519083019061280a818360208801612a2b565b01949350505050565b60007f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008252835161284b816017850160208801612a2b565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161287c816028840160208801612a2b565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128bb908301846127b8565b9695505050505050565b600060208252610c3760208301846127b8565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156129dc576129dc612ad8565b500190565b6000826129f0576129f0612aee565b500490565b6000816000190483118215151615612a0f57612a0f612ad8565b500290565b600082821015612a2657612a26612ad8565b500390565b60005b83811015612a46578181015183820152602001612a2e565b83811115610dbe5750506000910152565b600081612a6657612a66612ad8565b506000190190565b600181811c90821680612a8257607f821691505b60208210811415612aa357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612abd57612abd612ad8565b5060010190565b600082612ad357612ad3612aee565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461092d57600080fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203af1e9d2f22a8390dfa95d0220f98342dade4c87e1c500cd62fe25e77a605c5b64736f6c63430008030033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
