{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockFtsoRegistry",
  "sourceName": "contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "name": "GovernanceCallTimelocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initialGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceInitialised",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "governanceSettings",
          "type": "address"
        }
      ],
      "name": "GovernedProductionModeEntered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallExecuted",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIFtso",
          "name": "_ftsoContract",
          "type": "address"
        }
      ],
      "name": "addFtso",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "cancelGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "executeGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllFtsos",
      "outputs": [
        {
          "internalType": "contract IIFtso[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "getCurrentPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_assetIndex",
          "type": "uint256"
        }
      ],
      "name": "getCurrentPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_assetIndex",
          "type": "uint256"
        }
      ],
      "name": "getFtso",
      "outputs": [
        {
          "internalType": "contract IIFtso",
          "name": "_activeFtso",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "getFtsoBySymbol",
      "outputs": [
        {
          "internalType": "contract IIFtso",
          "name": "_activeFtso",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_assetIndex",
          "type": "uint256"
        }
      ],
      "name": "getFtsoHistory",
      "outputs": [
        {
          "internalType": "contract IIFtso[5]",
          "name": "_ftsoAddressHistory",
          "type": "address[5]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "getFtsoIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_assetIndex",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_assetIndex",
          "type": "uint256"
        }
      ],
      "name": "getFtsoSymbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_assetIndices",
          "type": "uint256[]"
        }
      ],
      "name": "getFtsos",
      "outputs": [
        {
          "internalType": "contract IFtsoGenesis[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedFtsos",
      "outputs": [
        {
          "internalType": "contract IIFtso[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedIndices",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_supportedIndices",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedIndicesAndFtsos",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_supportedIndices",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IIFtso[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedIndicesAndSymbols",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_supportedIndices",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_supportedSymbols",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedIndicesSymbolsAndFtsos",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_supportedIndices",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_supportedSymbols",
          "type": "string[]"
        },
        {
          "internalType": "contract IIFtso[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedSymbols",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "_supportedSymbols",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupportedSymbolsAndFtsos",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "_supportedSymbols",
          "type": "string[]"
        },
        {
          "internalType": "contract IIFtso[]",
          "name": "_ftsos",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceSettings",
      "outputs": [
        {
          "internalType": "contract IGovernanceSettings",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_initialGovernance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "productionMode",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIFtso",
          "name": "_ftso",
          "type": "address"
        }
      ],
      "name": "removeFtso",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "switchToProductionMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "timelockedCalls",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620029cb380380620029cb83398101604081905262000034916200016c565b80806001600160a01b0381161562000051576200005181620000a9565b506001600160a01b038116620000a1576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b50506200019c565b600054600160a01b900460ff161562000109576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b6000602082840312156200017e578081fd5b81516001600160a01b038116811462000195578182fd5b9392505050565b61281f80620001ac6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806397da6af4116100de578063c71a1b2011610097578063e17f212e11610071578063e17f212e1461037f578063e68f283b14610394578063e848da30146103aa578063f5a98383146103ca5761018e565b8063c71a1b2014610337578063ce1c0e4d14610357578063d75f6d811461036c5761018e565b806397da6af4146102c35780639cb47538146102d65780639d6a890f146102f6578063a40060ba14610309578063a670ff8714610311578063c55d0f56146103245761018e565b80635aa6e6751161014b57806367fc40291161012557806367fc40291461026357806374e6310e146102765780637687542c14610297578063798aac5b146102ae5761018e565b80635aa6e675146102335780635ff270791461024857806362354e031461025b5761018e565b806306a2ba29146101935780630cf48497146101b2578063136d3f64146101c85780632663f1b4146101e85780632bcdd6ab146101fd57806342a0f24314610212575b600080fd5b61019b6103d2565b6040516101a9929190612673565b60405180910390f35b6101ba6104a8565b6040516101a992919061263b565b6101db6101d6366004612451565b61066d565b6040516101a991906126f9565b6101fb6101f636600461227c565b6106f4565b005b61020561093a565b6040516101a99190612615565b610225610220366004612367565b6109f6565b6040516101a9929190612736565b61023b610a82565b6040516101a9919061257a565b6101fb61025636600461233f565b610b17565b61023b610e6c565b6101fb61027136600461233f565b610e77565b61028961028436600461233f565b610f5f565b6040516101a9929190612715565b61029f611005565b6040516101a9939291906126ab565b6102b66111ca565b6040516101a99190612660565b61023b6102d1366004612367565b6111d4565b6102e96102e436600461229f565b6111e2565b6040516101a9919061258e565b6101fb61030436600461227c565b61136f565b610205611428565b6101fb61031f36600461227c565b6114ff565b610225610332366004612451565b61174f565b61034a610345366004612451565b61175b565b6040516101a991906125db565b61035f611841565b6040516101a99190612628565b61023b61037a366004612451565b611978565b610387611983565b6040516101a991906126ee565b61039c611993565b6040516101a9929190612686565b6103bd6103b8366004612367565b611ac9565b6040516101a9919061270c565b6101fb611ad4565b6060806103dd611b8e565b8051909250806001600160401b03811180156103f857600080fd5b50604051908082528060200260200182016040528015610422578160200160208202803683370190505b5091505b80156104a35780600190039050600283828151811061044157fe5b60200260200101518154811061045357fe5b600091825260208220600590910201015482516001600160a01b039091169083908390811061047e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610426565b509091565b60608060006104b5611b8e565b8051909150806001600160401b03811180156104d057600080fd5b506040519080825280602002602001820160405280156104fa578160200160208202803683370190505b509250806001600160401b038111801561051357600080fd5b5060405190808252806020026020018201604052801561054757816020015b60608152602001906001900390816105325790505b5093505b80156106675780600190039050600282828151811061056657fe5b60200260200101518154811061057857fe5b600091825260208220600590910201015483516001600160a01b03909116908490839081106105a357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508281815181106105cf57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561060f57600080fd5b505afa158015610623573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261064b91908101906123df565b84828151811061065757fe5b602002602001018190525061054b565b50509091565b606061067882611ccf565b6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ec91908101906123df565b90505b919050565b600054600160b01b900460ff16806107165750600054600160a81b900460ff16155b1561092c57610723611d86565b600060028054905090506000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107a491908101906123df565b90506000816040516020016107b991906126f9565b60405160208183030381529060405280519060200120905060005b838110156108c4576000600282815481106107eb57fe5b60009182526020822060059091020101546001600160a01b031690508061081257506108bc565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088791908101906123df565b60405160200161089791906126f9565b604051602081830303815290604052805190602001208314156108ba57506108c4565b505b6001016107d4565b838114156108dd576002805460010181556000526108e6565b6108e681611dbd565b84600282815481106108f457fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555061093792505050565b610937600036611e50565b50565b6002546060906000816001600160401b038111801561095857600080fd5b50604051908082528060200260200182016040528015610982578160200160208202803683370190505b5090505b81156109f05781600190039150600282815481106109a057fe5b600091825260208220600590910201015481516001600160a01b03909116908290849081106109cb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610986565b91505090565b600080610a0a610a0584611fd3565b611ccf565b6001600160a01b031663eb91d37e6040518163ffffffff1660e01b8152600401604080518083038186803b158015610a4157600080fd5b505afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a799190612469565b91509150915091565b60008054600160a81b900460ff16610aa5576000546001600160a01b0316610b12565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d6020811015610b0f57600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610b5b57600080fd5b505afa158015610b6f573d6000803e3d6000fd5b505050506040513d6020811015610b8557600080fd5b5051610bc8576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610c34576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610c8a576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d245780601f10610cf957610100808354040283529160200191610d24565b820191906000526020600020905b815481529060010190602001808311610d0757829003601f168201915b5050506001600160e01b0319861660009081526001602081905260408220828155949550909250610d589150830182612179565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b60208310610da05780518252601f199092019160209182019101610d81565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e02576040519150601f19603f3d011682016040523d82523d6000602084013e610e07565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a1610e66816120fd565b50505050565b60076001609c1b0181565b610e7f61211a565b6001600160e01b03198116600090815260016020526040902054610eea576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610f5a90830182612179565b505050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f81018590048502860185019096528585529094919392909190830182828015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b5050505050905082565b6060806060611012611b8e565b8051909350806001600160401b038111801561102d57600080fd5b50604051908082528060200260200182016040528015611057578160200160208202803683370190505b509150806001600160401b038111801561107057600080fd5b506040519080825280602002602001820160405280156110a457816020015b606081526020019060019003908161108f5790505b5092505b80156111c4578060019003905060028482815181106110c357fe5b6020026020010151815481106110d557fe5b600091825260208220600590910201015482516001600160a01b039091169083908390811061110057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081818151811061112c57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561116c57600080fd5b505afa158015611180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a891908101906123df565b8382815181106111b457fe5b60200260200101819052506110a8565b50909192565b6060610b12611b8e565b60006106ec610a0583611fd3565b600254815160609190806001600160401b038111801561120157600080fd5b5060405190808252806020026020018201604052801561122b578160200160208202803683370190505b5092505b80156113685780600190039050600084828151811061124a57fe5b602002602001015190508281106040518060400160405280601881526020016000805160206127ca833981519152815250906112a25760405162461bcd60e51b815260040161129991906126f9565b60405180910390fd5b50600281815481106112b057fe5b600091825260208220600590910201015484516001600160a01b03909116908590849081106112db57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006001600160a01b031684838151811061131257fe5b60200260200101516001600160a01b0316141561136257604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b5061122f565b5050919050565b600054600160a01b900460ff16156113c5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b60606000611434611b8e565b8051909150806001600160401b038111801561144f57600080fd5b50604051908082528060200260200182016040528015611479578160200160208202803683370190505b5092505b80156114fa5780600190039050600282828151811061149857fe5b6020026020010151815481106114aa57fe5b600091825260208220600590910201015483516001600160a01b03909116908490839081106114d557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061147d565b505090565b600054600160b01b900460ff16806115215750600054600160a81b900460ff16155b1561092c5761152e611d86565b6000816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561156957600080fd5b505afa15801561157d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115a591908101906123df565b6040516020016115b591906126f9565b60408051601f19818403018152919052805160209091012060025490915060005b81811015611710576000600282815481106115ed57fe5b60009182526020822060059091020101546001600160a01b03169050806116145750611708565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561164d57600080fd5b505afa158015611661573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168991908101906123df565b60405160200161169991906126f9565b60405160208183030381529060405280519060200120841415611706576116bf82611dbd565b6000600283815481106116ce57fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555061174a92505050565b505b6001016115d6565b50604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b610937565b600080610a0a83611ccf565b6117636121bd565b600254821080156117a4575060006001600160a01b03166002838154811061178757fe5b60009182526020822060059091020101546001600160a01b031614155b6040518060400160405280601881526020016000805160206127ca833981519152815250906117e65760405162461bcd60e51b815260040161129991906126f9565b50600282815481106117f457fe5b600091825260209091206040805160a0810191829052926005908102909201919082845b81546001600160a01b031681526001909101906020018083116118185750505050509050919050565b6060600061184d611b8e565b8051909150806001600160401b038111801561186857600080fd5b5060405190808252806020026020018201604052801561189c57816020015b60608152602001906001900390816118875790505b5092505b80156114fa5780600190039050600060028383815181106118bd57fe5b6020026020010151815481106118cf57fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261195b91908101906123df565b84838151811061196757fe5b6020026020010181905250506118a0565b60006106ec82611ccf565b600054600160a81b900460ff1681565b60608061199e611b8e565b8051909250806001600160401b03811180156119b957600080fd5b506040519080825280602002602001820160405280156119ed57816020015b60608152602001906001900390816119d85790505b5091505b80156104a3578060019003905060006002848381518110611a0e57fe5b602002602001015181548110611a2057fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b158015611a7057600080fd5b505afa158015611a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aac91908101906123df565b838381518110611ab857fe5b6020026020010181905250506119f1565b60006106ec82611fd3565b611adc61211a565b600054600160a81b900460ff1615611b3b576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b6002546060906000816001600160401b0381118015611bac57600080fd5b50604051908082528060200260200182016040528015611bd6578160200160208202803683370190505b50905060008060005b84811015611c4557826001600160a01b031660028281548110611bfe57fe5b60009182526020822060059091020101546001600160a01b031614611c3d5780848381518110611c2a57fe5b6020026020010181815250508160010191505b600101611bdf565b50806001600160401b0381118015611c5c57600080fd5b50604051908082528060200260200182016040528015611c86578160200160208202803683370190505b5094505b8015611cc85780600190039050828181518110611ca357fe5b6020026020010151858281518110611cb757fe5b602002602001018181525050611c8a565b5050505090565b60025460408051808201909152601881526000805160206127ca83398151915260208201526000918310611d165760405162461bcd60e51b815260040161129991906126f9565b50600060028381548110611d2657fe5b60009182526020822060059091020101546001600160a01b0316905080611d8057604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b92915050565b600054600160b01b900460ff1615611db357333014611da157fe5b6000805460ff60b01b19169055611dbb565b611dbb61211a565b565b60045b8015611e4c5760028281548110611dd357fe5b90600052602060002090600502016001820360058110611def57fe5b0154600280546001600160a01b039092169184908110611e0b57fe5b90600052602060002090600502018260058110611e2457fe5b0180546001600160a01b0319166001600160a01b039290921691909117905560001901611dc0565b5050565b611e5861211a565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea057600080fd5b505afa158015611eb4573d6000803e3d6000fd5b505050506040513d6020811015611eca57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b03198616815260016020818152604090922084518155848301518051919450611f4e939285019201906121db565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b60008082604051602001611fe791906126f9565b60408051601f19818403018152919052805160209091012060025490915060005b818110156117105760006002828154811061201f57fe5b60009182526020822060059091020101546001600160a01b031690508061204657506120f5565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561207f57600080fd5b505afa158015612093573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120bb91908101906123df565b6040516020016120cb91906126f9565b604051602081830303815290604052805190602001208414156120f3575092506106ef915050565b505b600101612008565b3d604051818101604052816000823e8215612116578181f35b8181fd5b612122610a82565b6001600160a01b0316336001600160a01b031614611dbb576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b50805460018160011615610100020316600290046000825580601f1061219f5750610937565b601f0160209004906000526020600020908101906109379190612267565b6040518060a001604052806005906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826122115760008555612257565b82601f1061222a57805160ff1916838001178555612257565b82800160010185558215612257579182015b8281111561225757825182559160200191906001019061223c565b50612263929150612267565b5090565b5b808211156122635760008155600101612268565b60006020828403121561228d578081fd5b8135612298816127b4565b9392505050565b600060208083850312156122b1578182fd5b82356001600160401b03808211156122c7578384fd5b818501915085601f8301126122da578384fd5b8135818111156122e657fe5b83810291506122f6848301612744565b8181528481019084860184860187018a1015612310578788fd5b8795505b83861015612332578035835260019590950194918601918601612314565b5098975050505050505050565b600060208284031215612350578081fd5b81356001600160e01b031981168114612298578182fd5b600060208284031215612378578081fd5b81356001600160401b0381111561238d578182fd5b8201601f8101841361239d578182fd5b80356123b06123ab82612767565b612744565b8181528560208385010111156123c4578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156123f0578081fd5b81516001600160401b03811115612405578182fd5b8201601f81018413612415578182fd5b80516124236123ab82612767565b818152856020838501011115612437578384fd5b612448826020830160208601612788565b95945050505050565b600060208284031215612462578081fd5b5035919050565b6000806040838503121561247b578081fd5b505080516020909101519092909150565b6000815180845260208085019450808401835b838110156124c45781516001600160a01b03168752958201959082019060010161249f565b509495945050505050565b6000815180845260208085019450848183028601828601855b8581101561251257838303895261250083835161254e565b988501989250908401906001016124e8565b5090979650505050505050565b6000815180845260208085019450808401835b838110156124c457815187529582019590820190600101612532565b60008151808452612566816020860160208601612788565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156125cf5783516001600160a01b0316835292840192918401916001016125aa565b50909695505050505050565b60a08101818360005b600581101561260c5781516001600160a01b03168352602092830192909101906001016125e4565b50505092915050565b600060208252612298602083018461248c565b60006020825261229860208301846124cf565b60006040825261264e60408301856124cf565b8281036020840152612448818561248c565b600060208252612298602083018461251f565b60006040825261264e604083018561251f565b600060408252612699604083018561251f565b828103602084015261244881856124cf565b6000606082526126be606083018661251f565b82810360208401526126d081866124cf565b905082810360408401526126e4818561248c565b9695505050505050565b901515815260200190565b600060208252612298602083018461254e565b90815260200190565b60008382526040602083015261272e604083018461254e565b949350505050565b918252602082015260400190565b6040518181016001600160401b038111828210171561275f57fe5b604052919050565b60006001600160401b0382111561277a57fe5b50601f01601f191660200190565b60005b838110156127a357818101518382015260200161278b565b83811115610e665750506000910152565b6001600160a01b038116811461093757600080fdfe4654534f20696e646578206e6f7420737570706f727465640000000000000000a2646970667358221220453dceff8b86360e566706dbdf29ce780c9c048c7842b19a868e9fc7e46f869c64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806397da6af4116100de578063c71a1b2011610097578063e17f212e11610071578063e17f212e1461037f578063e68f283b14610394578063e848da30146103aa578063f5a98383146103ca5761018e565b8063c71a1b2014610337578063ce1c0e4d14610357578063d75f6d811461036c5761018e565b806397da6af4146102c35780639cb47538146102d65780639d6a890f146102f6578063a40060ba14610309578063a670ff8714610311578063c55d0f56146103245761018e565b80635aa6e6751161014b57806367fc40291161012557806367fc40291461026357806374e6310e146102765780637687542c14610297578063798aac5b146102ae5761018e565b80635aa6e675146102335780635ff270791461024857806362354e031461025b5761018e565b806306a2ba29146101935780630cf48497146101b2578063136d3f64146101c85780632663f1b4146101e85780632bcdd6ab146101fd57806342a0f24314610212575b600080fd5b61019b6103d2565b6040516101a9929190612673565b60405180910390f35b6101ba6104a8565b6040516101a992919061263b565b6101db6101d6366004612451565b61066d565b6040516101a991906126f9565b6101fb6101f636600461227c565b6106f4565b005b61020561093a565b6040516101a99190612615565b610225610220366004612367565b6109f6565b6040516101a9929190612736565b61023b610a82565b6040516101a9919061257a565b6101fb61025636600461233f565b610b17565b61023b610e6c565b6101fb61027136600461233f565b610e77565b61028961028436600461233f565b610f5f565b6040516101a9929190612715565b61029f611005565b6040516101a9939291906126ab565b6102b66111ca565b6040516101a99190612660565b61023b6102d1366004612367565b6111d4565b6102e96102e436600461229f565b6111e2565b6040516101a9919061258e565b6101fb61030436600461227c565b61136f565b610205611428565b6101fb61031f36600461227c565b6114ff565b610225610332366004612451565b61174f565b61034a610345366004612451565b61175b565b6040516101a991906125db565b61035f611841565b6040516101a99190612628565b61023b61037a366004612451565b611978565b610387611983565b6040516101a991906126ee565b61039c611993565b6040516101a9929190612686565b6103bd6103b8366004612367565b611ac9565b6040516101a9919061270c565b6101fb611ad4565b6060806103dd611b8e565b8051909250806001600160401b03811180156103f857600080fd5b50604051908082528060200260200182016040528015610422578160200160208202803683370190505b5091505b80156104a35780600190039050600283828151811061044157fe5b60200260200101518154811061045357fe5b600091825260208220600590910201015482516001600160a01b039091169083908390811061047e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610426565b509091565b60608060006104b5611b8e565b8051909150806001600160401b03811180156104d057600080fd5b506040519080825280602002602001820160405280156104fa578160200160208202803683370190505b509250806001600160401b038111801561051357600080fd5b5060405190808252806020026020018201604052801561054757816020015b60608152602001906001900390816105325790505b5093505b80156106675780600190039050600282828151811061056657fe5b60200260200101518154811061057857fe5b600091825260208220600590910201015483516001600160a01b03909116908490839081106105a357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508281815181106105cf57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561060f57600080fd5b505afa158015610623573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261064b91908101906123df565b84828151811061065757fe5b602002602001018190525061054b565b50509091565b606061067882611ccf565b6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ec91908101906123df565b90505b919050565b600054600160b01b900460ff16806107165750600054600160a81b900460ff16155b1561092c57610723611d86565b600060028054905090506000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107a491908101906123df565b90506000816040516020016107b991906126f9565b60405160208183030381529060405280519060200120905060005b838110156108c4576000600282815481106107eb57fe5b60009182526020822060059091020101546001600160a01b031690508061081257506108bc565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088791908101906123df565b60405160200161089791906126f9565b604051602081830303815290604052805190602001208314156108ba57506108c4565b505b6001016107d4565b838114156108dd576002805460010181556000526108e6565b6108e681611dbd565b84600282815481106108f457fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555061093792505050565b610937600036611e50565b50565b6002546060906000816001600160401b038111801561095857600080fd5b50604051908082528060200260200182016040528015610982578160200160208202803683370190505b5090505b81156109f05781600190039150600282815481106109a057fe5b600091825260208220600590910201015481516001600160a01b03909116908290849081106109cb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610986565b91505090565b600080610a0a610a0584611fd3565b611ccf565b6001600160a01b031663eb91d37e6040518163ffffffff1660e01b8152600401604080518083038186803b158015610a4157600080fd5b505afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a799190612469565b91509150915091565b60008054600160a81b900460ff16610aa5576000546001600160a01b0316610b12565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d6020811015610b0f57600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610b5b57600080fd5b505afa158015610b6f573d6000803e3d6000fd5b505050506040513d6020811015610b8557600080fd5b5051610bc8576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610c34576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610c8a576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d245780601f10610cf957610100808354040283529160200191610d24565b820191906000526020600020905b815481529060010190602001808311610d0757829003601f168201915b5050506001600160e01b0319861660009081526001602081905260408220828155949550909250610d589150830182612179565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b60208310610da05780518252601f199092019160209182019101610d81565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e02576040519150601f19603f3d011682016040523d82523d6000602084013e610e07565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a1610e66816120fd565b50505050565b60076001609c1b0181565b610e7f61211a565b6001600160e01b03198116600090815260016020526040902054610eea576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610f5a90830182612179565b505050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f81018590048502860185019096528585529094919392909190830182828015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b5050505050905082565b6060806060611012611b8e565b8051909350806001600160401b038111801561102d57600080fd5b50604051908082528060200260200182016040528015611057578160200160208202803683370190505b509150806001600160401b038111801561107057600080fd5b506040519080825280602002602001820160405280156110a457816020015b606081526020019060019003908161108f5790505b5092505b80156111c4578060019003905060028482815181106110c357fe5b6020026020010151815481106110d557fe5b600091825260208220600590910201015482516001600160a01b039091169083908390811061110057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081818151811061112c57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561116c57600080fd5b505afa158015611180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a891908101906123df565b8382815181106111b457fe5b60200260200101819052506110a8565b50909192565b6060610b12611b8e565b60006106ec610a0583611fd3565b600254815160609190806001600160401b038111801561120157600080fd5b5060405190808252806020026020018201604052801561122b578160200160208202803683370190505b5092505b80156113685780600190039050600084828151811061124a57fe5b602002602001015190508281106040518060400160405280601881526020016000805160206127ca833981519152815250906112a25760405162461bcd60e51b815260040161129991906126f9565b60405180910390fd5b50600281815481106112b057fe5b600091825260208220600590910201015484516001600160a01b03909116908590849081106112db57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006001600160a01b031684838151811061131257fe5b60200260200101516001600160a01b0316141561136257604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b5061122f565b5050919050565b600054600160a01b900460ff16156113c5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b60606000611434611b8e565b8051909150806001600160401b038111801561144f57600080fd5b50604051908082528060200260200182016040528015611479578160200160208202803683370190505b5092505b80156114fa5780600190039050600282828151811061149857fe5b6020026020010151815481106114aa57fe5b600091825260208220600590910201015483516001600160a01b03909116908490839081106114d557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061147d565b505090565b600054600160b01b900460ff16806115215750600054600160a81b900460ff16155b1561092c5761152e611d86565b6000816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561156957600080fd5b505afa15801561157d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115a591908101906123df565b6040516020016115b591906126f9565b60408051601f19818403018152919052805160209091012060025490915060005b81811015611710576000600282815481106115ed57fe5b60009182526020822060059091020101546001600160a01b03169050806116145750611708565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561164d57600080fd5b505afa158015611661573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168991908101906123df565b60405160200161169991906126f9565b60405160208183030381529060405280519060200120841415611706576116bf82611dbd565b6000600283815481106116ce57fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555061174a92505050565b505b6001016115d6565b50604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b610937565b600080610a0a83611ccf565b6117636121bd565b600254821080156117a4575060006001600160a01b03166002838154811061178757fe5b60009182526020822060059091020101546001600160a01b031614155b6040518060400160405280601881526020016000805160206127ca833981519152815250906117e65760405162461bcd60e51b815260040161129991906126f9565b50600282815481106117f457fe5b600091825260209091206040805160a0810191829052926005908102909201919082845b81546001600160a01b031681526001909101906020018083116118185750505050509050919050565b6060600061184d611b8e565b8051909150806001600160401b038111801561186857600080fd5b5060405190808252806020026020018201604052801561189c57816020015b60608152602001906001900390816118875790505b5092505b80156114fa5780600190039050600060028383815181106118bd57fe5b6020026020010151815481106118cf57fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261195b91908101906123df565b84838151811061196757fe5b6020026020010181905250506118a0565b60006106ec82611ccf565b600054600160a81b900460ff1681565b60608061199e611b8e565b8051909250806001600160401b03811180156119b957600080fd5b506040519080825280602002602001820160405280156119ed57816020015b60608152602001906001900390816119d85790505b5091505b80156104a3578060019003905060006002848381518110611a0e57fe5b602002602001015181548110611a2057fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b158015611a7057600080fd5b505afa158015611a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aac91908101906123df565b838381518110611ab857fe5b6020026020010181905250506119f1565b60006106ec82611fd3565b611adc61211a565b600054600160a81b900460ff1615611b3b576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b6002546060906000816001600160401b0381118015611bac57600080fd5b50604051908082528060200260200182016040528015611bd6578160200160208202803683370190505b50905060008060005b84811015611c4557826001600160a01b031660028281548110611bfe57fe5b60009182526020822060059091020101546001600160a01b031614611c3d5780848381518110611c2a57fe5b6020026020010181815250508160010191505b600101611bdf565b50806001600160401b0381118015611c5c57600080fd5b50604051908082528060200260200182016040528015611c86578160200160208202803683370190505b5094505b8015611cc85780600190039050828181518110611ca357fe5b6020026020010151858281518110611cb757fe5b602002602001018181525050611c8a565b5050505090565b60025460408051808201909152601881526000805160206127ca83398151915260208201526000918310611d165760405162461bcd60e51b815260040161129991906126f9565b50600060028381548110611d2657fe5b60009182526020822060059091020101546001600160a01b0316905080611d8057604080518082018252601881526000805160206127ca8339815191526020820152905162461bcd60e51b815261129991906004016126f9565b92915050565b600054600160b01b900460ff1615611db357333014611da157fe5b6000805460ff60b01b19169055611dbb565b611dbb61211a565b565b60045b8015611e4c5760028281548110611dd357fe5b90600052602060002090600502016001820360058110611def57fe5b0154600280546001600160a01b039092169184908110611e0b57fe5b90600052602060002090600502018260058110611e2457fe5b0180546001600160a01b0319166001600160a01b039290921691909117905560001901611dc0565b5050565b611e5861211a565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea057600080fd5b505afa158015611eb4573d6000803e3d6000fd5b505050506040513d6020811015611eca57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b03198616815260016020818152604090922084518155848301518051919450611f4e939285019201906121db565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b60008082604051602001611fe791906126f9565b60408051601f19818403018152919052805160209091012060025490915060005b818110156117105760006002828154811061201f57fe5b60009182526020822060059091020101546001600160a01b031690508061204657506120f5565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561207f57600080fd5b505afa158015612093573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120bb91908101906123df565b6040516020016120cb91906126f9565b604051602081830303815290604052805190602001208414156120f3575092506106ef915050565b505b600101612008565b3d604051818101604052816000823e8215612116578181f35b8181fd5b612122610a82565b6001600160a01b0316336001600160a01b031614611dbb576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b50805460018160011615610100020316600290046000825580601f1061219f5750610937565b601f0160209004906000526020600020908101906109379190612267565b6040518060a001604052806005906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826122115760008555612257565b82601f1061222a57805160ff1916838001178555612257565b82800160010185558215612257579182015b8281111561225757825182559160200191906001019061223c565b50612263929150612267565b5090565b5b808211156122635760008155600101612268565b60006020828403121561228d578081fd5b8135612298816127b4565b9392505050565b600060208083850312156122b1578182fd5b82356001600160401b03808211156122c7578384fd5b818501915085601f8301126122da578384fd5b8135818111156122e657fe5b83810291506122f6848301612744565b8181528481019084860184860187018a1015612310578788fd5b8795505b83861015612332578035835260019590950194918601918601612314565b5098975050505050505050565b600060208284031215612350578081fd5b81356001600160e01b031981168114612298578182fd5b600060208284031215612378578081fd5b81356001600160401b0381111561238d578182fd5b8201601f8101841361239d578182fd5b80356123b06123ab82612767565b612744565b8181528560208385010111156123c4578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156123f0578081fd5b81516001600160401b03811115612405578182fd5b8201601f81018413612415578182fd5b80516124236123ab82612767565b818152856020838501011115612437578384fd5b612448826020830160208601612788565b95945050505050565b600060208284031215612462578081fd5b5035919050565b6000806040838503121561247b578081fd5b505080516020909101519092909150565b6000815180845260208085019450808401835b838110156124c45781516001600160a01b03168752958201959082019060010161249f565b509495945050505050565b6000815180845260208085019450848183028601828601855b8581101561251257838303895261250083835161254e565b988501989250908401906001016124e8565b5090979650505050505050565b6000815180845260208085019450808401835b838110156124c457815187529582019590820190600101612532565b60008151808452612566816020860160208601612788565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156125cf5783516001600160a01b0316835292840192918401916001016125aa565b50909695505050505050565b60a08101818360005b600581101561260c5781516001600160a01b03168352602092830192909101906001016125e4565b50505092915050565b600060208252612298602083018461248c565b60006020825261229860208301846124cf565b60006040825261264e60408301856124cf565b8281036020840152612448818561248c565b600060208252612298602083018461251f565b60006040825261264e604083018561251f565b600060408252612699604083018561251f565b828103602084015261244881856124cf565b6000606082526126be606083018661251f565b82810360208401526126d081866124cf565b905082810360408401526126e4818561248c565b9695505050505050565b901515815260200190565b600060208252612298602083018461254e565b90815260200190565b60008382526040602083015261272e604083018461254e565b949350505050565b918252602082015260400190565b6040518181016001600160401b038111828210171561275f57fe5b604052919050565b60006001600160401b0382111561277a57fe5b50601f01601f191660200190565b60005b838110156127a357818101518382015260200161278b565b83811115610e665750506000910152565b6001600160a01b038116811461093757600080fdfe4654534f20696e646578206e6f7420737570706f727465640000000000000000a2646970667358221220453dceff8b86360e566706dbdf29ce780c9c048c7842b19a868e9fc7e46f869c64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
