{
  "_format": "hh-sol-artifact-1",
  "contractName": "FlareDaemon",
  "sourceName": "contracts/genesis/implementation/FlareDaemon.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "atBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "theMessage",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasConsumed",
          "type": "uint256"
        }
      ],
      "name": "ContractDaemonizeErrored",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasConsumed",
          "type": "uint256"
        }
      ],
      "name": "ContractDaemonized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockHoldoffsRemaining",
          "type": "uint256"
        }
      ],
      "name": "ContractHeldOff",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numberOfSkippedConstracts",
          "type": "uint256"
        }
      ],
      "name": "ContractsSkippedOutOfGas",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IInflationGenesis",
          "name": "theNewContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IInflationGenesis",
          "name": "theOldContract",
          "type": "address"
        }
      ],
      "name": "InflationSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingRequestReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingRequestTriggered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IFlareDaemonize",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "add",
          "type": "bool"
        }
      ],
      "name": "RegistrationUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "SelfDestructReceived",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "blockHoldoff",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "errorData",
      "outputs": [
        {
          "internalType": "uint192",
          "name": "totalDaemonizedErrors",
          "type": "uint192"
        },
        {
          "internalType": "uint64",
          "name": "lastErrorTypeIndex",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDaemonizedContractsData",
      "outputs": [
        {
          "internalType": "contract IFlareDaemonize[]",
          "name": "_daemonizeContracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_gasLimits",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_blockHoldoffsRemaining",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextMintRequestAllowedTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inflation",
      "outputs": [
        {
          "internalType": "contract IInflationGenesis",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialiseFixedAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastMintRequestTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastUpdateMaxMintRequestTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxMintingRequestWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IFlareDaemonize",
              "name": "daemonizedContract",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "gasLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct FlareDaemon.Registration[]",
          "name": "_registrations",
          "type": "tuple[]"
        }
      ],
      "name": "registerToDaemonize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "requestMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_blockHoldoff",
          "type": "uint256"
        }
      ],
      "name": "setBlockHoldoff",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IInflationGenesis",
          "name": "_inflation",
          "type": "address"
        }
      ],
      "name": "setInflation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxMintingRequestWei",
          "type": "uint256"
        }
      ],
      "name": "setMaxMintingRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numErrorTypesToShow",
          "type": "uint256"
        }
      ],
      "name": "showDaemonizedErrors",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_lastErrorBlock",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numErrors",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_errorString",
          "type": "string[]"
        },
        {
          "internalType": "address[]",
          "name": "_erroringContract",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_totalDaemonizedErrors",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "showLastDaemonizedError",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_lastErrorBlock",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numErrors",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_errorString",
          "type": "string[]"
        },
        {
          "internalType": "address[]",
          "name": "_erroringContract",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_totalDaemonizedErrors",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "systemLastTriggeredAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingRequestedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingWithdrawnWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSelfDestructReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "trigger",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_toMintWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unregisterAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612712806100206000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638be2fb8611610104578063d38bfff4116100a2578063e9de7d6011610071578063e9de7d6014610322578063ecdda0dd14610335578063ed21b6e414610348578063ee323c921461035f576101cf565b8063d38bfff4146102e9578063d48a38df146102fc578063dded1b4714610304578063e371aef01461030c576101cf565b8063a6817ace116100de578063a6817ace146102be578063be0522e0146102c6578063c373a08e146102ce578063c9f960eb146102e1576101cf565b80638be2fb861461029b5780638ccf77a0146102a35780639d6a890f146102ab576101cf565b806362da19a511610171578063689c49991161014b578063689c49991461026557806372993615146102785780637fec8d3814610280578063870196b814610288576101cf565b806362da19a51461023c578063639031431461024457806363d4a53a1461024c576101cf565b80635042916c116101ad5780635042916c146102025780635aa6e675146102175780635d36b1901461022c57806360f7ac9714610234576101cf565b806310663750146101d45780631d76dea1146101f25780634f6a77b5146101fa575b600080fd5b6101dc610372565b6040516101e991906125f3565b60405180910390f35b6101dc610378565b6101dc61037e565b6102156102103660046122ee565b610384565b005b61021f610391565b6040516101e991906123e4565b6102156103a0565b61021f610462565b6101dc610471565b6101dc610477565b610254610487565b6040516101e99594939291906124ea565b61021561027336600461225f565b6104c2565b6101dc6107a8565b6101dc6107ae565b6102156102963660046122ee565b610859565b6101dc610960565b610215610966565b6102156102b9366004612243565b610978565b6101dc61097d565b61021f610983565b6102156102dc366004612243565b610992565b61021f6109ee565b6102156102f7366004612243565b610a2d565b6101dc610aa6565b6101dc610aac565b610314610ab2565b6040516101e99291906125d1565b6102156103303660046122ee565b610ad3565b610254610343366004612306565b610c0c565b610350610f69565b6040516101e993929190612475565b61021561036d366004612243565b61112e565b60055481565b60095481565b60085481565b61038c6111fc565b600c55565b6000546001600160a01b031681565b6001546001600160a01b031633146103ef576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b60045481565b600061048161124d565b90505b90565b600b546060908190819081906000906104b190600160c01b90046001600160401b03166001610c0c565b945094509450945094509091929394565b6104ca6111fc565b604080518082019091526008815267746f6f206d616e7960c01b60208201528190600a8211156105165760405162461bcd60e51b815260040161050d91906125be565b60405180910390fd5b5061051f611258565b60005b818110156107a257600084848381811061053857fe5b61054e9260206040909202019081019150612243565b6001600160a01b031614156040518060400160405280600c81526020016b61646472657373207a65726f60a01b8152509061059c5760405162461bcd60e51b815260040161050d91906125be565b5060105460005b8181101561064557601081815481106105b857fe5b6000918252602090912001546001600160a01b03168686858181106105d957fe5b6105ef9260206040909202019081019150612243565b6001600160a01b031614156040518060400160405280600b81526020016a647570206164647265737360a81b8152509061063c5760405162461bcd60e51b815260040161050d91906125be565b506001016105a3565b50601085858481811061065457fe5b61066a9260206040909202019081019150612243565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b039092169190911790558484838181106106a857fe5b90506040020160200135601160008787868181106106c257fe5b6106d89260206040909202019081019150612243565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006012600087878681811061070e57fe5b6107249260206040909202019081019150612243565b6001600160a01b031681526020810191909152604001600020557f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb5985858481811061076b57fe5b6107819260206040909202019081019150612243565b6001604051610791929190612589565b60405180910390a150600101610522565b50505050565b60075481565b6002546000906001600160a01b03166107f3576107f3306040518060400160405280600e81526020016d696e666c6174696f6e207a65726f60901b8152506000611308565b60026001609c1b01331461080657600080fd5b61080e6114cc565b9050600061081a611d37565b905047811461085557610855306040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b8152506000611308565b5090565b6108616111fc565b60085461087190606e6064611d5c565b811115604051806040016040528060118152602001700dac2f040dad2dce840e8dede40d0d2ced607b1b815250906108bc5760405162461bcd60e51b815260040161050d91906125be565b5060408051808201909152601081526f6d6178206d696e74206973207a65726f60801b6020820152816109025760405162461bcd60e51b815260040161050d91906125be565b5062015180600a54014211604051806040016040528060128152602001711d1a5b594819d85c081d1bdbc81cda1bdc9d60721b815250906109565760405162461bcd60e51b815260040161050d91906125be565b5060085542600a55565b60035481565b61096e6111fc565b610976611258565b565bfe5b50565b600a5481565b6002546001600160a01b031681565b61099a6111fc565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600f5460009060ff16610a1b57600f805460ff191660011790556000610a12611e64565b91506104849050565b506000546001600160a01b0316610484565b610a356111fc565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600c5481565b60065481565b600b546001600160c01b03811690600160c01b90046001600160401b031682565b60025460408051808201909152600d81526c3737ba1034b7333630ba34b7b760991b602082015233916001600160a01b03168214610b245760405162461bcd60e51b815260040161050d91906125be565b5060085482111560405180604001604052806007815260200166746f6f2062696760c81b81525090610b695760405162461bcd60e51b815260040161050d91906125be565b5042610b7361124d565b10604051806040016040528060098152602001683a37b79037b33a32b760b91b81525090610bb45760405162461bcd60e51b815260040161050d91906125be565b508115610c085742600955600454610bcc9083611e84565b6004556040517f4c4f1efc376f31abeb51b72c5f9ed81cf4016591312bb02337e58149dcfaaab490610bff9084906125f3565b60405180910390a15b5050565b606080606080600060148054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b81525090610c635760405162461bcd60e51b815260040161050d91906125be565b506014546000908888011115610c7e57601454889003610c80565b865b9050806001600160401b0381118015610c9857600080fd5b50604051908082528060200260200182016040528015610cc2578160200160208202803683370190505b509550806001600160401b0381118015610cdb57600080fd5b50604051908082528060200260200182016040528015610d05578160200160208202803683370190505b509450806001600160401b0381118015610d1e57600080fd5b50604051908082528060200260200182016040528015610d5257816020015b6060815260200190600190039081610d3d5790505b509350806001600160401b0381118015610d6b57600080fd5b50604051908082528060200260200182016040528015610d95578160200160208202803683370190505b50925060005b81811015610f4d5760006014828b0181548110610db457fe5b6000918252602080832090910154808352601390915260409091205489519192506001600160c01b031690899084908110610deb57fe5b6020026020010181815250506013600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110610e3657fe5b6020908102919091018101919091526000828152601382526040908190206002908101805483516001821615610100026000190190911692909204601f81018590048502830185019093528282529092909190830182828015610eda5780601f10610eaf57610100808354040283529160200191610eda565b820191906000526020600020905b815481529060010190602001808311610ebd57829003601f168201915b5050505050868381518110610eeb57fe5b60200260200101819052506013600082815260200190815260200160002060010160009054906101000a90046001600160a01b0316858381518110610f2c57fe5b6001600160a01b039092166020928302919091019091015250600101610d9b565b5050600b549497939650919450926001600160c01b0316919050565b60105460609081908190806001600160401b0381118015610f8957600080fd5b50604051908082528060200260200182016040528015610fb3578160200160208202803683370190505b509350806001600160401b0381118015610fcc57600080fd5b50604051908082528060200260200182016040528015610ff6578160200160208202803683370190505b509250806001600160401b038111801561100f57600080fd5b50604051908082528060200260200182016040528015611039578160200160208202803683370190505b50915060005b818110156111275760006010828154811061105657fe5b9060005260206000200160009054906101000a90046001600160a01b031690508086838151811061108357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060116000826001600160a01b03166001600160a01b03168152602001908152602001600020548583815181106110d557fe5b60200260200101818152505060126000826001600160a01b03166001600160a01b031681526020019081526020016000205484838151811061111357fe5b60209081029190910101525060010161103f565b5050909192565b6111366111fc565b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166111825760405162461bcd60e51b815260040161050d91906125be565b506002546040517f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b979805916111c09184916001600160a01b0316906125a4565b60405180910390a1600280546001600160a01b0319166001600160a01b03831617905560085461097a576a295be96e6406697200000060085550565b6000546001600160a01b03163314610976576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600954620143700190565b60105460005b81811015610c08576010805460009190600019810190811061127c57fe5b600091825260209091200154601080546001600160a01b03909216925090806112a157fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59916112f791849190612589565b60405180910390a15060010161125e565b6000838360405160200161131d9291906123f8565b60408051808303601f190181529181528151602092830120600081815260139093529120805491925090600160c01b90046001600160401b03166114045760148054600180820183556000929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01839055810180546001600160a01b0319166001600160a01b0387161790556113b7846040611ee7565b80516113cd9160028401916020909101906121ab565b5060145460018201805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0316929092029190911790555b8054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b0319169190911782556040517f7a459ed083a9b267865360013a5ad6dbc07e5befe6e4f71671c940fdd4206bee91611475918891908890889061243d565b60405180910390a1600b80546001600160c01b0319811660016001600160c01b0392831681018316919091178084559301549216600160a01b9092046001600160401b0316600160c01b0291909117905550505050565b60006003544314156114e057506000610484565b43600355600d5447908111156118b6576000611509600e54600d54611e8490919063ffffffff16565b90508082141561167e57600e546005546115239082611e84565b6005556040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c906115569083906125f3565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115ae57600080fd5b505af1935050505080156115c0575060015b61162f576115cc612602565b806115d757506115e9565b6115e330826000611308565b5061162a565b61162a306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e670000008152506000611308565b611678565b60065461163c9082611e84565b6006556040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a9061166f9083906125f3565b60405180910390a15b506118b4565b808210156116e057600061169d600d5484611f9b90919063ffffffff16565b6007549091506116ad9082611e84565b6007556040517f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3689061166f9083906125f3565b600e546005546116ef91611e84565b600555600e54600d546000916117109161170a908690611f9b565b90611f9b565b6007549091506117209082611e84565b600755600e546040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c91611754916125f3565b60405180910390a17f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3688160405161178b91906125f3565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5600e546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117e557600080fd5b505af1935050505080156117f7575060015b61186657611803612602565b8061180e5750611820565b61181a30826000611308565b50611861565b611861306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e670000008152506000611308565b6118b2565b600e5460065461187591611e84565b600655600e546040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a916118a9916125f3565b60405180910390a15b505b505b60105460005b81811015611cd5576000601082815481106118d357fe5b60009182526020808320909101546001600160a01b03168083526012909152604090912054909150801561195f576001600160a01b0382166000908152601260205260409081902060001983019055517f9895eddb1e8569b1dae526135aa5cab97f982fdc3b0ff7e17920c95e3b9bda62906119529084908490612424565b60405180910390a1611ccb565b6001600160a01b038216600090815260116020526040812054905a90506204a7688110156119c9577f9b5c4be38598cb8d8b6e07727d2303d1d9fc2dfc31ad323170f5ea4dcc1f914a8587036040516119b891906125f3565b60405180910390a150505050611cd5565b620493df19810182158015906119de57508083105b156119e65750815b846001600160a01b0316636d0e8c34826040518263ffffffff1660e01b8152600401602060405180830381600088803b158015611a2257600080fd5b5087f193505050508015611a53575060408051601f3d908101601f19168201909252611a50918101906122ce565b60015b611c8a57611a5f612602565b80611a6a5750611af1565b611a7786825a8603611308565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611ab257600080fd5b505af1158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906122ce565b5050611c85565b60005a9050600084118015611b0f575083611b0c8483611f9b565b10155b15611be257611b43866040518060400160405280600a8152602001696f7574206f662067617360b01b815250838603611308565b6000866001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb891906122ce565b905080611bdc57600c546001600160a01b0388166000908152601260205260409020555b50611c83565b611c0e86604051806040016040528060078152602001663ab735b737bbb760c91b815250838603611308565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611c4957600080fd5b505af1158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8191906122ce565b505b505b611cc7565b507fe7aa66356adbd5e839ef210626f6d8f6f72109c17fadf4c4f9ca82b315ae79b4855a8403604051611cbe929190612424565b60405180910390a15b5050505b50506001016118bc565b50611cde611ff8565b92508215611d2857600e8390556040517f34f843cef0df42035141347873da1758a6643358831b5ba5b1580be947644f9290611d1b9085906125f3565b60405180910390a1611d2e565b6000600e555b505047600d5590565b6000610481600754611d56600654600554611f9b90919063ffffffff16565b90611e84565b6000808211611da5576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611db257506000611e5d565b83830283858281611dbf57fe5b041415611dd857828181611dcf57fe5b04915050611e5d565b6000838681611de357fe5b0490506000848781611df157fe5b0690506000858781611dff57fe5b0490506000868881611e0d57fe5b069050611e55611e2788611e218685612011565b9061206a565b611d56611e348686612011565b611d56611e418987612011565b611d568d611e4f8c8b612011565b90612011565b955050505050505b9392505050565b600073fffec6c83c8bf5c3f4ae0ccf8c45ce20e4560bd7610481816120d1565b600082820183811015611ede576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6060600083905082815111611eff5783915050611ee1565b6000836001600160401b0381118015611f1757600080fd5b506040519080825280601f01601f191660200182016040528015611f42576020820181803683370190505b50905060005b84811015611f9257828181518110611f5c57fe5b602001015160f81c60f81b828281518110611f7357fe5b60200101906001600160f81b031916908160001a905350600101611f48565b50949350505050565b600082821115611ff2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000610481600554600454611f9b90919063ffffffff16565b60008261202057506000611ee1565b8282028284828161202d57fe5b0414611ede5760405162461bcd60e51b81526004018080602001828103825260218152602001806126bc6021913960400191505060405180910390fd5b60008082116120c0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816120c957fe5b049392505050565b600154600160a01b900460ff1615612127576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826121e15760008555612227565b82601f106121fa57805160ff1916838001178555612227565b82800160010185558215612227579182015b8281111561222757825182559160200191906001019061220c565b506108559291505b80821115610855576000815560010161222f565b600060208284031215612254578081fd5b8135611ede816126a6565b60008060208385031215612271578081fd5b82356001600160401b0380821115612287578283fd5b818501915085601f83011261229a578283fd5b8135818111156122a8578384fd5b8660206040830285010111156122bc578384fd5b60209290920196919550909350505050565b6000602082840312156122df578081fd5b81518015158114611ede578182fd5b6000602082840312156122ff578081fd5b5035919050565b60008060408385031215612318578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561235f5781516001600160a01b03168752958201959082019060010161233a565b509495945050505050565b6000815180845260208085019450808401835b8381101561235f5781518752958201959082019060010161237d565b60008151808452815b818110156123be576020818501810151868301820152016123a2565b818111156123cf5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020820181905260009061241c90830184612399565b949350505050565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0386168252846020830152608060408301526124646080830185612399565b905082606083015295945050505050565b606080825284519082018190526000906020906080840190828801845b828110156124b75781516001600160a01b031684529284019290840190600101612492565b505050838103828501526124cb818761236a565b91505082810360408401526124e0818561236a565b9695505050505050565b600060a082526124fd60a083018861236a565b602083820381850152612510828961236a565b848103604086015287518082529092508183019082810284018301838a01865b8381101561255e57601f1987840301855261254c838351612399565b94860194925090850190600101612530565b50508681036060880152612572818a612327565b955050505050508260808301529695505050505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b600060208252611e5d6020830184612399565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60e01c90565b600060443d101561261257610484565b600481823e6308c379a061262682516125fc565b1461263057610484565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561265f5750505050610484565b828401925082519150808211156126795750505050610484565b503d8301602082840101111561269157505050610484565b601f01601f1916810160200160405291505090565b6001600160a01b038116811461097a57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a951214224470d876b18c8403e18956668dd220dcef83f1939c003ad902e089c64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638be2fb8611610104578063d38bfff4116100a2578063e9de7d6011610071578063e9de7d6014610322578063ecdda0dd14610335578063ed21b6e414610348578063ee323c921461035f576101cf565b8063d38bfff4146102e9578063d48a38df146102fc578063dded1b4714610304578063e371aef01461030c576101cf565b8063a6817ace116100de578063a6817ace146102be578063be0522e0146102c6578063c373a08e146102ce578063c9f960eb146102e1576101cf565b80638be2fb861461029b5780638ccf77a0146102a35780639d6a890f146102ab576101cf565b806362da19a511610171578063689c49991161014b578063689c49991461026557806372993615146102785780637fec8d3814610280578063870196b814610288576101cf565b806362da19a51461023c578063639031431461024457806363d4a53a1461024c576101cf565b80635042916c116101ad5780635042916c146102025780635aa6e675146102175780635d36b1901461022c57806360f7ac9714610234576101cf565b806310663750146101d45780631d76dea1146101f25780634f6a77b5146101fa575b600080fd5b6101dc610372565b6040516101e991906125f3565b60405180910390f35b6101dc610378565b6101dc61037e565b6102156102103660046122ee565b610384565b005b61021f610391565b6040516101e991906123e4565b6102156103a0565b61021f610462565b6101dc610471565b6101dc610477565b610254610487565b6040516101e99594939291906124ea565b61021561027336600461225f565b6104c2565b6101dc6107a8565b6101dc6107ae565b6102156102963660046122ee565b610859565b6101dc610960565b610215610966565b6102156102b9366004612243565b610978565b6101dc61097d565b61021f610983565b6102156102dc366004612243565b610992565b61021f6109ee565b6102156102f7366004612243565b610a2d565b6101dc610aa6565b6101dc610aac565b610314610ab2565b6040516101e99291906125d1565b6102156103303660046122ee565b610ad3565b610254610343366004612306565b610c0c565b610350610f69565b6040516101e993929190612475565b61021561036d366004612243565b61112e565b60055481565b60095481565b60085481565b61038c6111fc565b600c55565b6000546001600160a01b031681565b6001546001600160a01b031633146103ef576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b60045481565b600061048161124d565b90505b90565b600b546060908190819081906000906104b190600160c01b90046001600160401b03166001610c0c565b945094509450945094509091929394565b6104ca6111fc565b604080518082019091526008815267746f6f206d616e7960c01b60208201528190600a8211156105165760405162461bcd60e51b815260040161050d91906125be565b60405180910390fd5b5061051f611258565b60005b818110156107a257600084848381811061053857fe5b61054e9260206040909202019081019150612243565b6001600160a01b031614156040518060400160405280600c81526020016b61646472657373207a65726f60a01b8152509061059c5760405162461bcd60e51b815260040161050d91906125be565b5060105460005b8181101561064557601081815481106105b857fe5b6000918252602090912001546001600160a01b03168686858181106105d957fe5b6105ef9260206040909202019081019150612243565b6001600160a01b031614156040518060400160405280600b81526020016a647570206164647265737360a81b8152509061063c5760405162461bcd60e51b815260040161050d91906125be565b506001016105a3565b50601085858481811061065457fe5b61066a9260206040909202019081019150612243565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b039092169190911790558484838181106106a857fe5b90506040020160200135601160008787868181106106c257fe5b6106d89260206040909202019081019150612243565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006012600087878681811061070e57fe5b6107249260206040909202019081019150612243565b6001600160a01b031681526020810191909152604001600020557f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb5985858481811061076b57fe5b6107819260206040909202019081019150612243565b6001604051610791929190612589565b60405180910390a150600101610522565b50505050565b60075481565b6002546000906001600160a01b03166107f3576107f3306040518060400160405280600e81526020016d696e666c6174696f6e207a65726f60901b8152506000611308565b60026001609c1b01331461080657600080fd5b61080e6114cc565b9050600061081a611d37565b905047811461085557610855306040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b8152506000611308565b5090565b6108616111fc565b60085461087190606e6064611d5c565b811115604051806040016040528060118152602001700dac2f040dad2dce840e8dede40d0d2ced607b1b815250906108bc5760405162461bcd60e51b815260040161050d91906125be565b5060408051808201909152601081526f6d6178206d696e74206973207a65726f60801b6020820152816109025760405162461bcd60e51b815260040161050d91906125be565b5062015180600a54014211604051806040016040528060128152602001711d1a5b594819d85c081d1bdbc81cda1bdc9d60721b815250906109565760405162461bcd60e51b815260040161050d91906125be565b5060085542600a55565b60035481565b61096e6111fc565b610976611258565b565bfe5b50565b600a5481565b6002546001600160a01b031681565b61099a6111fc565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600f5460009060ff16610a1b57600f805460ff191660011790556000610a12611e64565b91506104849050565b506000546001600160a01b0316610484565b610a356111fc565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600c5481565b60065481565b600b546001600160c01b03811690600160c01b90046001600160401b031682565b60025460408051808201909152600d81526c3737ba1034b7333630ba34b7b760991b602082015233916001600160a01b03168214610b245760405162461bcd60e51b815260040161050d91906125be565b5060085482111560405180604001604052806007815260200166746f6f2062696760c81b81525090610b695760405162461bcd60e51b815260040161050d91906125be565b5042610b7361124d565b10604051806040016040528060098152602001683a37b79037b33a32b760b91b81525090610bb45760405162461bcd60e51b815260040161050d91906125be565b508115610c085742600955600454610bcc9083611e84565b6004556040517f4c4f1efc376f31abeb51b72c5f9ed81cf4016591312bb02337e58149dcfaaab490610bff9084906125f3565b60405180910390a15b5050565b606080606080600060148054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b81525090610c635760405162461bcd60e51b815260040161050d91906125be565b506014546000908888011115610c7e57601454889003610c80565b865b9050806001600160401b0381118015610c9857600080fd5b50604051908082528060200260200182016040528015610cc2578160200160208202803683370190505b509550806001600160401b0381118015610cdb57600080fd5b50604051908082528060200260200182016040528015610d05578160200160208202803683370190505b509450806001600160401b0381118015610d1e57600080fd5b50604051908082528060200260200182016040528015610d5257816020015b6060815260200190600190039081610d3d5790505b509350806001600160401b0381118015610d6b57600080fd5b50604051908082528060200260200182016040528015610d95578160200160208202803683370190505b50925060005b81811015610f4d5760006014828b0181548110610db457fe5b6000918252602080832090910154808352601390915260409091205489519192506001600160c01b031690899084908110610deb57fe5b6020026020010181815250506013600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110610e3657fe5b6020908102919091018101919091526000828152601382526040908190206002908101805483516001821615610100026000190190911692909204601f81018590048502830185019093528282529092909190830182828015610eda5780601f10610eaf57610100808354040283529160200191610eda565b820191906000526020600020905b815481529060010190602001808311610ebd57829003601f168201915b5050505050868381518110610eeb57fe5b60200260200101819052506013600082815260200190815260200160002060010160009054906101000a90046001600160a01b0316858381518110610f2c57fe5b6001600160a01b039092166020928302919091019091015250600101610d9b565b5050600b549497939650919450926001600160c01b0316919050565b60105460609081908190806001600160401b0381118015610f8957600080fd5b50604051908082528060200260200182016040528015610fb3578160200160208202803683370190505b509350806001600160401b0381118015610fcc57600080fd5b50604051908082528060200260200182016040528015610ff6578160200160208202803683370190505b509250806001600160401b038111801561100f57600080fd5b50604051908082528060200260200182016040528015611039578160200160208202803683370190505b50915060005b818110156111275760006010828154811061105657fe5b9060005260206000200160009054906101000a90046001600160a01b031690508086838151811061108357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060116000826001600160a01b03166001600160a01b03168152602001908152602001600020548583815181106110d557fe5b60200260200101818152505060126000826001600160a01b03166001600160a01b031681526020019081526020016000205484838151811061111357fe5b60209081029190910101525060010161103f565b5050909192565b6111366111fc565b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166111825760405162461bcd60e51b815260040161050d91906125be565b506002546040517f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b979805916111c09184916001600160a01b0316906125a4565b60405180910390a1600280546001600160a01b0319166001600160a01b03831617905560085461097a576a295be96e6406697200000060085550565b6000546001600160a01b03163314610976576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600954620143700190565b60105460005b81811015610c08576010805460009190600019810190811061127c57fe5b600091825260209091200154601080546001600160a01b03909216925090806112a157fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59916112f791849190612589565b60405180910390a15060010161125e565b6000838360405160200161131d9291906123f8565b60408051808303601f190181529181528151602092830120600081815260139093529120805491925090600160c01b90046001600160401b03166114045760148054600180820183556000929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01839055810180546001600160a01b0319166001600160a01b0387161790556113b7846040611ee7565b80516113cd9160028401916020909101906121ab565b5060145460018201805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0316929092029190911790555b8054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b0319169190911782556040517f7a459ed083a9b267865360013a5ad6dbc07e5befe6e4f71671c940fdd4206bee91611475918891908890889061243d565b60405180910390a1600b80546001600160c01b0319811660016001600160c01b0392831681018316919091178084559301549216600160a01b9092046001600160401b0316600160c01b0291909117905550505050565b60006003544314156114e057506000610484565b43600355600d5447908111156118b6576000611509600e54600d54611e8490919063ffffffff16565b90508082141561167e57600e546005546115239082611e84565b6005556040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c906115569083906125f3565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115ae57600080fd5b505af1935050505080156115c0575060015b61162f576115cc612602565b806115d757506115e9565b6115e330826000611308565b5061162a565b61162a306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e670000008152506000611308565b611678565b60065461163c9082611e84565b6006556040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a9061166f9083906125f3565b60405180910390a15b506118b4565b808210156116e057600061169d600d5484611f9b90919063ffffffff16565b6007549091506116ad9082611e84565b6007556040517f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3689061166f9083906125f3565b600e546005546116ef91611e84565b600555600e54600d546000916117109161170a908690611f9b565b90611f9b565b6007549091506117209082611e84565b600755600e546040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c91611754916125f3565b60405180910390a17f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3688160405161178b91906125f3565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5600e546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117e557600080fd5b505af1935050505080156117f7575060015b61186657611803612602565b8061180e5750611820565b61181a30826000611308565b50611861565b611861306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e670000008152506000611308565b6118b2565b600e5460065461187591611e84565b600655600e546040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a916118a9916125f3565b60405180910390a15b505b505b60105460005b81811015611cd5576000601082815481106118d357fe5b60009182526020808320909101546001600160a01b03168083526012909152604090912054909150801561195f576001600160a01b0382166000908152601260205260409081902060001983019055517f9895eddb1e8569b1dae526135aa5cab97f982fdc3b0ff7e17920c95e3b9bda62906119529084908490612424565b60405180910390a1611ccb565b6001600160a01b038216600090815260116020526040812054905a90506204a7688110156119c9577f9b5c4be38598cb8d8b6e07727d2303d1d9fc2dfc31ad323170f5ea4dcc1f914a8587036040516119b891906125f3565b60405180910390a150505050611cd5565b620493df19810182158015906119de57508083105b156119e65750815b846001600160a01b0316636d0e8c34826040518263ffffffff1660e01b8152600401602060405180830381600088803b158015611a2257600080fd5b5087f193505050508015611a53575060408051601f3d908101601f19168201909252611a50918101906122ce565b60015b611c8a57611a5f612602565b80611a6a5750611af1565b611a7786825a8603611308565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611ab257600080fd5b505af1158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906122ce565b5050611c85565b60005a9050600084118015611b0f575083611b0c8483611f9b565b10155b15611be257611b43866040518060400160405280600a8152602001696f7574206f662067617360b01b815250838603611308565b6000866001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb891906122ce565b905080611bdc57600c546001600160a01b0388166000908152601260205260409020555b50611c83565b611c0e86604051806040016040528060078152602001663ab735b737bbb760c91b815250838603611308565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611c4957600080fd5b505af1158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8191906122ce565b505b505b611cc7565b507fe7aa66356adbd5e839ef210626f6d8f6f72109c17fadf4c4f9ca82b315ae79b4855a8403604051611cbe929190612424565b60405180910390a15b5050505b50506001016118bc565b50611cde611ff8565b92508215611d2857600e8390556040517f34f843cef0df42035141347873da1758a6643358831b5ba5b1580be947644f9290611d1b9085906125f3565b60405180910390a1611d2e565b6000600e555b505047600d5590565b6000610481600754611d56600654600554611f9b90919063ffffffff16565b90611e84565b6000808211611da5576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611db257506000611e5d565b83830283858281611dbf57fe5b041415611dd857828181611dcf57fe5b04915050611e5d565b6000838681611de357fe5b0490506000848781611df157fe5b0690506000858781611dff57fe5b0490506000868881611e0d57fe5b069050611e55611e2788611e218685612011565b9061206a565b611d56611e348686612011565b611d56611e418987612011565b611d568d611e4f8c8b612011565b90612011565b955050505050505b9392505050565b600073fffec6c83c8bf5c3f4ae0ccf8c45ce20e4560bd7610481816120d1565b600082820183811015611ede576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6060600083905082815111611eff5783915050611ee1565b6000836001600160401b0381118015611f1757600080fd5b506040519080825280601f01601f191660200182016040528015611f42576020820181803683370190505b50905060005b84811015611f9257828181518110611f5c57fe5b602001015160f81c60f81b828281518110611f7357fe5b60200101906001600160f81b031916908160001a905350600101611f48565b50949350505050565b600082821115611ff2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000610481600554600454611f9b90919063ffffffff16565b60008261202057506000611ee1565b8282028284828161202d57fe5b0414611ede5760405162461bcd60e51b81526004018080602001828103825260218152602001806126bc6021913960400191505060405180910390fd5b60008082116120c0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816120c957fe5b049392505050565b600154600160a01b900460ff1615612127576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826121e15760008555612227565b82601f106121fa57805160ff1916838001178555612227565b82800160010185558215612227579182015b8281111561222757825182559160200191906001019061220c565b506108559291505b80821115610855576000815560010161222f565b600060208284031215612254578081fd5b8135611ede816126a6565b60008060208385031215612271578081fd5b82356001600160401b0380821115612287578283fd5b818501915085601f83011261229a578283fd5b8135818111156122a8578384fd5b8660206040830285010111156122bc578384fd5b60209290920196919550909350505050565b6000602082840312156122df578081fd5b81518015158114611ede578182fd5b6000602082840312156122ff578081fd5b5035919050565b60008060408385031215612318578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561235f5781516001600160a01b03168752958201959082019060010161233a565b509495945050505050565b6000815180845260208085019450808401835b8381101561235f5781518752958201959082019060010161237d565b60008151808452815b818110156123be576020818501810151868301820152016123a2565b818111156123cf5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020820181905260009061241c90830184612399565b949350505050565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0386168252846020830152608060408301526124646080830185612399565b905082606083015295945050505050565b606080825284519082018190526000906020906080840190828801845b828110156124b75781516001600160a01b031684529284019290840190600101612492565b505050838103828501526124cb818761236a565b91505082810360408401526124e0818561236a565b9695505050505050565b600060a082526124fd60a083018861236a565b602083820381850152612510828961236a565b848103604086015287518082529092508183019082810284018301838a01865b8381101561255e57601f1987840301855261254c838351612399565b94860194925090850190600101612530565b50508681036060880152612572818a612327565b955050505050508260808301529695505050505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b600060208252611e5d6020830184612399565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60e01c90565b600060443d101561261257610484565b600481823e6308c379a061262682516125fc565b1461263057610484565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561265f5750505050610484565b828401925082519150808211156126795750505050610484565b503d8301602082840101111561269157505050610484565b601f01601f1916810160200160405291505090565b6001600160a01b038116811461097a57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a951214224470d876b18c8403e18956668dd220dcef83f1939c003ad902e089c64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
