{
  "_format": "hh-sol-artifact-1",
  "contractName": "TimedOutChallengeManager",
  "sourceName": "src/mocks/TimedOutChallengeManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "NotOwner",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "challengeRoot",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "challengedSegmentStart",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "challengedSegmentLength",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "chainHashes",
          "type": "bytes32[]"
        }
      ],
      "name": "Bisected",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "enum IChallengeManager.ChallengeTerminationType",
          "name": "kind",
          "type": "uint8"
        }
      ],
      "name": "ChallengeEnded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockSteps",
          "type": "uint256"
        }
      ],
      "name": "ExecutionChallengeBegun",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "components": [
            {
              "internalType": "bytes32[2]",
              "name": "bytes32Vals",
              "type": "bytes32[2]"
            },
            {
              "internalType": "uint64[2]",
              "name": "u64Vals",
              "type": "uint64[2]"
            }
          ],
          "indexed": false,
          "internalType": "struct GlobalState",
          "name": "startState",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes32[2]",
              "name": "bytes32Vals",
              "type": "bytes32[2]"
            },
            {
              "internalType": "uint64[2]",
              "name": "u64Vals",
              "type": "uint64[2]"
            }
          ],
          "indexed": false,
          "internalType": "struct GlobalState",
          "name": "endState",
          "type": "tuple"
        }
      ],
      "name": "InitiatedChallenge",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        }
      ],
      "name": "OneStepProofCompleted",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "oldSegmentsStart",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "oldSegmentsLength",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "oldSegments",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256",
              "name": "challengePosition",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeLib.SegmentSelection",
          "name": "selection",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "newSegments",
          "type": "bytes32[]"
        }
      ],
      "name": "bisectExecution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridge",
      "outputs": [
        {
          "internalType": "contract IBridge",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "oldSegmentsStart",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "oldSegmentsLength",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "oldSegments",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256",
              "name": "challengePosition",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeLib.SegmentSelection",
          "name": "selection",
          "type": "tuple"
        },
        {
          "internalType": "enum MachineStatus[2]",
          "name": "machineStatuses",
          "type": "uint8[2]"
        },
        {
          "internalType": "bytes32[2]",
          "name": "globalStateHashes",
          "type": "bytes32[2]"
        },
        {
          "internalType": "uint256",
          "name": "numSteps",
          "type": "uint256"
        }
      ],
      "name": "challengeExecution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        }
      ],
      "name": "challengeInfo",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "timeLeft",
                  "type": "uint256"
                }
              ],
              "internalType": "struct ChallengeLib.Participant",
              "name": "current",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "timeLeft",
                  "type": "uint256"
                }
              ],
              "internalType": "struct ChallengeLib.Participant",
              "name": "next",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "lastMoveTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "wasmModuleRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "challengeStateHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "maxInboxMessages",
              "type": "uint64"
            },
            {
              "internalType": "enum ChallengeLib.ChallengeMode",
              "name": "mode",
              "type": "uint8"
            }
          ],
          "internalType": "struct ChallengeLib.Challenge",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "challenges",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "timeLeft",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeLib.Participant",
          "name": "current",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "timeLeft",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeLib.Participant",
          "name": "next",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "lastMoveTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "wasmModuleRoot",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "challengeStateHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint64",
          "name": "maxInboxMessages",
          "type": "uint64"
        },
        {
          "internalType": "enum ChallengeLib.ChallengeMode",
          "name": "mode",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        }
      ],
      "name": "clearChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "wasmModuleRoot_",
          "type": "bytes32"
        },
        {
          "internalType": "enum MachineStatus[2]",
          "name": "startAndEndMachineStatuses_",
          "type": "uint8[2]"
        },
        {
          "components": [
            {
              "internalType": "bytes32[2]",
              "name": "bytes32Vals",
              "type": "bytes32[2]"
            },
            {
              "internalType": "uint64[2]",
              "name": "u64Vals",
              "type": "uint64[2]"
            }
          ],
          "internalType": "struct GlobalState[2]",
          "name": "startAndEndGlobalStates_",
          "type": "tuple[2]"
        },
        {
          "internalType": "uint64",
          "name": "numBlocks",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "asserter_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "challenger_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "asserterTimeLeft_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "challengerTimeLeft_",
          "type": "uint256"
        }
      ],
      "name": "createChallenge",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        }
      ],
      "name": "currentResponder",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "wasmModuleRoot",
          "type": "bytes32"
        }
      ],
      "name": "getOsp",
      "outputs": [
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IChallengeResultReceiver",
          "name": "resultReceiver_",
          "type": "address"
        },
        {
          "internalType": "contract ISequencerInbox",
          "name": "sequencerInbox_",
          "type": "address"
        },
        {
          "internalType": "contract IBridge",
          "name": "bridge_",
          "type": "address"
        },
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "osp_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "isTimedOut",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "oldSegmentsStart",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "oldSegmentsLength",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "oldSegments",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256",
              "name": "challengePosition",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeLib.SegmentSelection",
          "name": "selection",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "oneStepProveExecution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "osp",
      "outputs": [
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "ospCond",
      "outputs": [
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "osp_",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "condRoot",
          "type": "bytes32"
        },
        {
          "internalType": "contract IOneStepProofEntry",
          "name": "condOsp",
          "type": "address"
        }
      ],
      "name": "postUpgradeInit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "resultReceiver",
      "outputs": [
        {
          "internalType": "contract IChallengeResultReceiver",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sequencerInbox",
      "outputs": [
        {
          "internalType": "contract ISequencerInbox",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "challengeIndex",
          "type": "uint64"
        }
      ],
      "name": "timeout",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalChallengesCreated",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161190b610037600039600081816107de0152610bde015261190b6000f3fe608060405234801561001057600080fd5b50600436106101115760003560e01c80638f1d3776116100ad578063e78cea9211610071578063e78cea921461031b578063ee35f3271461032e578063f26a62c614610341578063f8c8765e14610354578063fb7be0a11461036757600080fd5b80638f1d3776146102055780639ede42b9146102a8578063a521b032146102cc578063d248d124146102df578063dc74bf8b146102f257600080fd5b806314eab5e7146101165780631b45c86a1461014657806323a9ef231461015b5780633504f1d7146101865780633690b011146101995780635038934d146101ac57806356e9df97146101bf5780635ef489e6146101d25780637fd07a9c146101e5575b600080fd5b610129610124366004611114565b61037a565b6040516001600160401b0390911681526020015b60405180910390f35b6101596101543660046111a7565b6106f1565b005b61016e6101693660046111a7565b610779565b6040516001600160a01b03909116815260200161013d565b60025461016e906001600160a01b031681565b61016e6101a73660046111c2565b61079d565b6101596101ba3660046111db565b6107d3565b6101596101cd3660046111a7565b6108b9565b600054610129906001600160401b031681565b6101f86101f33660046111a7565b610a27565b60405161013d919061125f565b6102956102133660046111c2565b6001602081815260009283526040928390208351808501855281546001600160a01b0390811682529382015481840152845180860190955260028201549093168452600381015491840191909152600481015460058201546006830154600790930154939493919290916001600160401b03811690600160401b900460ff1687565b60405161013d97969594939291906112d1565b6102bc6102b63660046111a7565b50600190565b604051901515815260200161013d565b6101596102da366004611334565b610b00565b6101596102ed3660046113d8565b610bab565b61016e6103003660046111c2565b6006602052600090815260409020546001600160a01b031681565b60045461016e906001600160a01b031681565b60035461016e906001600160a01b031681565b60055461016e906001600160a01b031681565b61015961036236600461146a565b610bd3565b6101596103753660046114c6565b610cff565b6002546000906001600160a01b031633146103cf5760405162461bcd60e51b815260206004820152601060248201526f13d3931657d493d313155417d0d2105360821b60448201526064015b60405180910390fd5b60408051600280825260608201835260009260208301908036833701905050905061049461040060208b018b61156a565b61048f8a60005b6080020180360381019061041b9190611629565b8051805160209182015192820151805190830151604080516c23b637b130b61039ba30ba329d60991b81870152602d810194909452604d8401959095526001600160c01b031960c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b610d27565b816000815181106104a7576104a7611554565b60209081029190910101526104d68960016020020160208101906104cb919061156a565b61048f8a6001610407565b816001815181106104e9576104e9611554565b6020908102919091010152600080548190819061050e906001600160401b03166116d7565b91906101000a8154816001600160401b0302191690836001600160401b031602179055905060006001600160401b0316816001600160401b03161415610556576105566116fe565b6001600160401b0381166000908152600160205260408120600581018d90559061059061058b368d90038d0160808e01611629565b610e4b565b905060026105a460408e0160208f0161156a565b60038111156105b5576105b5611235565b14806105e3575060006105d86105d3368e90038e0160808f01611629565b610e60565b6001600160401b0316115b156105f657806105f2816116d7565b9150505b6007820180546040805180820182526001600160a01b038d811680835260209283018d90526002880180546001600160a01b03199081169092179055600388018d905583518085018552918e16808352919092018b90528654909116178555600185018990554260048601556001600160401b0384811668ffffffffffffffffff1990931692909217600160401b179092559051908416907f76604fe17af46c9b5f53ffe99ff23e0f655dab91886b07ac1fc0254319f7145a906106c0908e90608082019061175e565b60405180910390a26106de8360008c6001600160401b031687610e6f565b5090925050505b98975050505050505050565b60006001600160401b038216600090815260016020526040902060070154600160401b900460ff16600281111561072a5761072a611235565b1415604051806040016040528060078152602001661393d7d0d2105360ca1b8152509061076a5760405162461bcd60e51b81526004016103c6919061177a565b50610776816000610f05565b50565b6001600160401b03166000908152600160205260409020546001600160a01b031690565b6000818152600660205260408120546001600160a01b0316806107cd5750506005546001600160a01b0316919050565b92915050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561081c5760405162461bcd60e51b81526004016103c6906117cf565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461087957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016103c6565b505060009182526006602052604090912080546001600160a01b039283166001600160a01b03199182161790915560058054939092169216919091179055565b6002546001600160a01b031633146109065760405162461bcd60e51b815260206004820152601060248201526f2727aa2fa922a9afa922a1a2a4ab22a960811b60448201526064016103c6565b60006001600160401b038216600090815260016020526040902060070154600160401b900460ff16600281111561093f5761093f611235565b1415604051806040016040528060078152602001661393d7d0d2105360ca1b8152509061097f5760405162461bcd60e51b81526004016103c6919061177a565b506001600160401b038116600081815260016020819052604080832080546001600160a01b031990811682559281018490556002810180549093169092556003808301849055600483018490556005830184905560068301939093556007909101805468ffffffffffffffffff19169055517ffdaece6c274a4b56af16761f83fd6b1062823192630ea08e019fdf9b2d747f4091610a1c9161182b565b60405180910390a250565b610a2f61106a565b6001600160401b0382811660009081526001602081815260409283902083516101208101855281546001600160a01b0390811660e0830190815294830154610100830152938152845180860186526002808401549095168152600383015481850152928101929092526004810154938201939093526005830154606082015260068301546080820152600783015493841660a08201529260c0840191600160401b90910460ff1690811115610ae657610ae6611235565b6002811115610af757610af7611235565b90525092915050565b6001600160401b038416600090815260016020526040812085918591610b2584610779565b6001600160a01b0316336001600160a01b031614610b735760405162461bcd60e51b815260206004820152600b60248201526a21a420a62fa9a2a72222a960a91b60448201526064016103c6565b60405162461bcd60e51b815260206004820152600d60248201526c4348414c5f444541444c494e4560981b60448201526064016103c6565b6001600160401b038416600090815260016020526040902084908490600290610b2584610779565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610c1c5760405162461bcd60e51b81526004016103c6906117cf565b6002546001600160a01b031615610c645760405162461bcd60e51b815260206004820152600c60248201526b1053149150511657d253925560a21b60448201526064016103c6565b6001600160a01b038416610caf5760405162461bcd60e51b81526020600482015260126024820152712727afa922a9aaa62a2fa922a1a2a4ab22a960711b60448201526064016103c6565b600280546001600160a01b039586166001600160a01b0319918216179091556003805494861694821694909417909355600480549285169284169290921790915560058054919093169116179055565b6001600160401b038516600090815260016020819052604090912086918691610b2584610779565b60006001836003811115610d3d57610d3d611235565b1415610d83576040516b213637b1b59039ba30ba329d60a11b6020820152602c8101839052604c015b6040516020818303038152906040528051906020012090506107cd565b6002836003811115610d9757610d97611235565b1415610dcd5760405174213637b1b59039ba30ba32961032b93937b932b21d60591b602082015260358101839052605501610d66565b6003836003811115610de157610de1611235565b1415610e105760405174213637b1b59039ba30ba3296103a37b7903330b91d60591b6020820152603501610d66565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b60448201526064016103c6565b6020810151600090815b602002015192915050565b60208101516000906001610e55565b6001821015610e8057610e806116fe565b600281511015610e9257610e926116fe565b6000610e9f848484611033565b6001600160401b038616600081815260016020526040908190206006018390555191925082917f86b34e9455464834eca718f62d4481437603bb929d8a78ccde5d1bc79fa06d6890610ef69088908890889061183e565b60405180910390a35050505050565b6001600160401b03821660008181526001602081905260408083206002808201805483546001600160a01b0319808216865596850188905595811690915560038301869055600480840187905560058401879055600684019690965560078301805468ffffffffffffffffff1916905590549251630357aa4960e01b8152948501959095526001600160a01b03948516602485018190529285166044850181905290949293909290911690630357aa4990606401600060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b50505050846001600160401b03167ffdaece6c274a4b56af16761f83fd6b1062823192630ea08e019fdf9b2d747f4085604051611024919061182b565b60405180910390a25050505050565b600083838360405160200161104a93929190611893565b6040516020818303038152906040528051906020012090505b9392505050565b604080516101208101909152600060e08201818152610100830191909152819081526020016110a9604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b80604081018310156107cd57600080fd5b80356001600160401b03811681146110fa57600080fd5b919050565b6001600160a01b038116811461077657600080fd5b600080600080600080600080610200898b03121561113157600080fd5b883597506111428a60208b016110d2565b965061016089018a81111561115657600080fd5b60608a019650611165816110e3565b955050610180890135611177816110ff565b93506101a0890135611188816110ff565b979a96995094979396929592945050506101c0820135916101e0013590565b6000602082840312156111b957600080fd5b611063826110e3565b6000602082840312156111d457600080fd5b5035919050565b6000806000606084860312156111f057600080fd5b83356111fb816110ff565b9250602084013591506040840135611212816110ff565b809150509250925092565b80516001600160a01b03168252602090810151910152565b634e487b7160e01b600052602160045260246000fd5b6003811061125b5761125b611235565b9052565b60006101208201905061127382845161121d565b6020830151611285604084018261121d565b5060408301516080830152606083015160a0830152608083015160c08301526001600160401b0360a08401511660e083015260c08301516112ca61010084018261124b565b5092915050565b61012081016112e0828a61121d565b6112ed604083018961121d565b8660808301528560a08301528460c08301526001600160401b03841660e08301526106e561010083018461124b565b60006080828403121561132e57600080fd5b50919050565b6000806000806060858703121561134a57600080fd5b611353856110e3565b935060208501356001600160401b038082111561136f57600080fd5b61137b8883890161131c565b9450604087013591508082111561139157600080fd5b818701915087601f8301126113a557600080fd5b8135818111156113b457600080fd5b8860208260051b85010111156113c957600080fd5b95989497505060200194505050565b600080600080606085870312156113ee57600080fd5b6113f7856110e3565b935060208501356001600160401b038082111561141357600080fd5b61141f8883890161131c565b9450604087013591508082111561143557600080fd5b818701915087601f83011261144957600080fd5b81358181111561145857600080fd5b8860208285010111156113c957600080fd5b6000806000806080858703121561148057600080fd5b843561148b816110ff565b9350602085013561149b816110ff565b925060408501356114ab816110ff565b915060608501356114bb816110ff565b939692955090935050565b600080600080600060e086880312156114de57600080fd5b6114e7866110e3565b945060208601356001600160401b0381111561150257600080fd5b61150e8882890161131c565b94505061151e87604088016110d2565b925061152d87608088016110d2565b9497939650919460c0013592915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561157c57600080fd5b81356004811061106357600080fd5b604080519081016001600160401b03811182821017156115ad576115ad61153e565b60405290565b600082601f8301126115c457600080fd5b604051604081018181106001600160401b03821117156115e6576115e661153e565b80604052508060408401858111156115fd57600080fd5b845b8181101561161e57611610816110e3565b8352602092830192016115ff565b509195945050505050565b60006080828403121561163b57600080fd5b604051604081018181106001600160401b038211171561165d5761165d61153e565b604052601f8301841361166f57600080fd5b61167761158b565b80604085018681111561168957600080fd5b855b818110156116a357803584526020938401930161168b565b508184526116b187826115b3565b6020850152509195945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818114156116f4576116f46116c1565b6001019392505050565b634e487b7160e01b600052600160045260246000fd5b604081833760006040838101828152908301915b6002811015611757576001600160401b03611742846110e3565b16825260209283019290910190600101611728565b5050505050565b610100810161176d8285611714565b6110636080830184611714565b600060208083528351808285015260005b818110156117a75785810183015185820160400152820161178b565b818111156117b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6004811061077657610776611235565b602081016118388361181b565b91905290565b6000606082018583526020858185015260606040850152818551808452608086019150828701935060005b8181101561188557845183529383019391830191600101611869565b509098975050505050505050565b83815260006020848184015260408301845182860160005b828110156118c7578151845292840192908401906001016118ab565b50919897505050505050505056fea2646970667358221220a4a97df17b017071a1269c647e0480369f3eedc3962d37ab2007e00e3decae8e64736f6c63430008090033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101115760003560e01c80638f1d3776116100ad578063e78cea9211610071578063e78cea921461031b578063ee35f3271461032e578063f26a62c614610341578063f8c8765e14610354578063fb7be0a11461036757600080fd5b80638f1d3776146102055780639ede42b9146102a8578063a521b032146102cc578063d248d124146102df578063dc74bf8b146102f257600080fd5b806314eab5e7146101165780631b45c86a1461014657806323a9ef231461015b5780633504f1d7146101865780633690b011146101995780635038934d146101ac57806356e9df97146101bf5780635ef489e6146101d25780637fd07a9c146101e5575b600080fd5b610129610124366004611114565b61037a565b6040516001600160401b0390911681526020015b60405180910390f35b6101596101543660046111a7565b6106f1565b005b61016e6101693660046111a7565b610779565b6040516001600160a01b03909116815260200161013d565b60025461016e906001600160a01b031681565b61016e6101a73660046111c2565b61079d565b6101596101ba3660046111db565b6107d3565b6101596101cd3660046111a7565b6108b9565b600054610129906001600160401b031681565b6101f86101f33660046111a7565b610a27565b60405161013d919061125f565b6102956102133660046111c2565b6001602081815260009283526040928390208351808501855281546001600160a01b0390811682529382015481840152845180860190955260028201549093168452600381015491840191909152600481015460058201546006830154600790930154939493919290916001600160401b03811690600160401b900460ff1687565b60405161013d97969594939291906112d1565b6102bc6102b63660046111a7565b50600190565b604051901515815260200161013d565b6101596102da366004611334565b610b00565b6101596102ed3660046113d8565b610bab565b61016e6103003660046111c2565b6006602052600090815260409020546001600160a01b031681565b60045461016e906001600160a01b031681565b60035461016e906001600160a01b031681565b60055461016e906001600160a01b031681565b61015961036236600461146a565b610bd3565b6101596103753660046114c6565b610cff565b6002546000906001600160a01b031633146103cf5760405162461bcd60e51b815260206004820152601060248201526f13d3931657d493d313155417d0d2105360821b60448201526064015b60405180910390fd5b60408051600280825260608201835260009260208301908036833701905050905061049461040060208b018b61156a565b61048f8a60005b6080020180360381019061041b9190611629565b8051805160209182015192820151805190830151604080516c23b637b130b61039ba30ba329d60991b81870152602d810194909452604d8401959095526001600160c01b031960c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b610d27565b816000815181106104a7576104a7611554565b60209081029190910101526104d68960016020020160208101906104cb919061156a565b61048f8a6001610407565b816001815181106104e9576104e9611554565b6020908102919091010152600080548190819061050e906001600160401b03166116d7565b91906101000a8154816001600160401b0302191690836001600160401b031602179055905060006001600160401b0316816001600160401b03161415610556576105566116fe565b6001600160401b0381166000908152600160205260408120600581018d90559061059061058b368d90038d0160808e01611629565b610e4b565b905060026105a460408e0160208f0161156a565b60038111156105b5576105b5611235565b14806105e3575060006105d86105d3368e90038e0160808f01611629565b610e60565b6001600160401b0316115b156105f657806105f2816116d7565b9150505b6007820180546040805180820182526001600160a01b038d811680835260209283018d90526002880180546001600160a01b03199081169092179055600388018d905583518085018552918e16808352919092018b90528654909116178555600185018990554260048601556001600160401b0384811668ffffffffffffffffff1990931692909217600160401b179092559051908416907f76604fe17af46c9b5f53ffe99ff23e0f655dab91886b07ac1fc0254319f7145a906106c0908e90608082019061175e565b60405180910390a26106de8360008c6001600160401b031687610e6f565b5090925050505b98975050505050505050565b60006001600160401b038216600090815260016020526040902060070154600160401b900460ff16600281111561072a5761072a611235565b1415604051806040016040528060078152602001661393d7d0d2105360ca1b8152509061076a5760405162461bcd60e51b81526004016103c6919061177a565b50610776816000610f05565b50565b6001600160401b03166000908152600160205260409020546001600160a01b031690565b6000818152600660205260408120546001600160a01b0316806107cd5750506005546001600160a01b0316919050565b92915050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561081c5760405162461bcd60e51b81526004016103c6906117cf565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461087957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016103c6565b505060009182526006602052604090912080546001600160a01b039283166001600160a01b03199182161790915560058054939092169216919091179055565b6002546001600160a01b031633146109065760405162461bcd60e51b815260206004820152601060248201526f2727aa2fa922a9afa922a1a2a4ab22a960811b60448201526064016103c6565b60006001600160401b038216600090815260016020526040902060070154600160401b900460ff16600281111561093f5761093f611235565b1415604051806040016040528060078152602001661393d7d0d2105360ca1b8152509061097f5760405162461bcd60e51b81526004016103c6919061177a565b506001600160401b038116600081815260016020819052604080832080546001600160a01b031990811682559281018490556002810180549093169092556003808301849055600483018490556005830184905560068301939093556007909101805468ffffffffffffffffff19169055517ffdaece6c274a4b56af16761f83fd6b1062823192630ea08e019fdf9b2d747f4091610a1c9161182b565b60405180910390a250565b610a2f61106a565b6001600160401b0382811660009081526001602081815260409283902083516101208101855281546001600160a01b0390811660e0830190815294830154610100830152938152845180860186526002808401549095168152600383015481850152928101929092526004810154938201939093526005830154606082015260068301546080820152600783015493841660a08201529260c0840191600160401b90910460ff1690811115610ae657610ae6611235565b6002811115610af757610af7611235565b90525092915050565b6001600160401b038416600090815260016020526040812085918591610b2584610779565b6001600160a01b0316336001600160a01b031614610b735760405162461bcd60e51b815260206004820152600b60248201526a21a420a62fa9a2a72222a960a91b60448201526064016103c6565b60405162461bcd60e51b815260206004820152600d60248201526c4348414c5f444541444c494e4560981b60448201526064016103c6565b6001600160401b038416600090815260016020526040902084908490600290610b2584610779565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610c1c5760405162461bcd60e51b81526004016103c6906117cf565b6002546001600160a01b031615610c645760405162461bcd60e51b815260206004820152600c60248201526b1053149150511657d253925560a21b60448201526064016103c6565b6001600160a01b038416610caf5760405162461bcd60e51b81526020600482015260126024820152712727afa922a9aaa62a2fa922a1a2a4ab22a960711b60448201526064016103c6565b600280546001600160a01b039586166001600160a01b0319918216179091556003805494861694821694909417909355600480549285169284169290921790915560058054919093169116179055565b6001600160401b038516600090815260016020819052604090912086918691610b2584610779565b60006001836003811115610d3d57610d3d611235565b1415610d83576040516b213637b1b59039ba30ba329d60a11b6020820152602c8101839052604c015b6040516020818303038152906040528051906020012090506107cd565b6002836003811115610d9757610d97611235565b1415610dcd5760405174213637b1b59039ba30ba32961032b93937b932b21d60591b602082015260358101839052605501610d66565b6003836003811115610de157610de1611235565b1415610e105760405174213637b1b59039ba30ba3296103a37b7903330b91d60591b6020820152603501610d66565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b60448201526064016103c6565b6020810151600090815b602002015192915050565b60208101516000906001610e55565b6001821015610e8057610e806116fe565b600281511015610e9257610e926116fe565b6000610e9f848484611033565b6001600160401b038616600081815260016020526040908190206006018390555191925082917f86b34e9455464834eca718f62d4481437603bb929d8a78ccde5d1bc79fa06d6890610ef69088908890889061183e565b60405180910390a35050505050565b6001600160401b03821660008181526001602081905260408083206002808201805483546001600160a01b0319808216865596850188905595811690915560038301869055600480840187905560058401879055600684019690965560078301805468ffffffffffffffffff1916905590549251630357aa4960e01b8152948501959095526001600160a01b03948516602485018190529285166044850181905290949293909290911690630357aa4990606401600060405180830381600087803b158015610fd357600080fd5b505af1158015610fe7573d6000803e3d6000fd5b50505050846001600160401b03167ffdaece6c274a4b56af16761f83fd6b1062823192630ea08e019fdf9b2d747f4085604051611024919061182b565b60405180910390a25050505050565b600083838360405160200161104a93929190611893565b6040516020818303038152906040528051906020012090505b9392505050565b604080516101208101909152600060e08201818152610100830191909152819081526020016110a9604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b80604081018310156107cd57600080fd5b80356001600160401b03811681146110fa57600080fd5b919050565b6001600160a01b038116811461077657600080fd5b600080600080600080600080610200898b03121561113157600080fd5b883597506111428a60208b016110d2565b965061016089018a81111561115657600080fd5b60608a019650611165816110e3565b955050610180890135611177816110ff565b93506101a0890135611188816110ff565b979a96995094979396929592945050506101c0820135916101e0013590565b6000602082840312156111b957600080fd5b611063826110e3565b6000602082840312156111d457600080fd5b5035919050565b6000806000606084860312156111f057600080fd5b83356111fb816110ff565b9250602084013591506040840135611212816110ff565b809150509250925092565b80516001600160a01b03168252602090810151910152565b634e487b7160e01b600052602160045260246000fd5b6003811061125b5761125b611235565b9052565b60006101208201905061127382845161121d565b6020830151611285604084018261121d565b5060408301516080830152606083015160a0830152608083015160c08301526001600160401b0360a08401511660e083015260c08301516112ca61010084018261124b565b5092915050565b61012081016112e0828a61121d565b6112ed604083018961121d565b8660808301528560a08301528460c08301526001600160401b03841660e08301526106e561010083018461124b565b60006080828403121561132e57600080fd5b50919050565b6000806000806060858703121561134a57600080fd5b611353856110e3565b935060208501356001600160401b038082111561136f57600080fd5b61137b8883890161131c565b9450604087013591508082111561139157600080fd5b818701915087601f8301126113a557600080fd5b8135818111156113b457600080fd5b8860208260051b85010111156113c957600080fd5b95989497505060200194505050565b600080600080606085870312156113ee57600080fd5b6113f7856110e3565b935060208501356001600160401b038082111561141357600080fd5b61141f8883890161131c565b9450604087013591508082111561143557600080fd5b818701915087601f83011261144957600080fd5b81358181111561145857600080fd5b8860208285010111156113c957600080fd5b6000806000806080858703121561148057600080fd5b843561148b816110ff565b9350602085013561149b816110ff565b925060408501356114ab816110ff565b915060608501356114bb816110ff565b939692955090935050565b600080600080600060e086880312156114de57600080fd5b6114e7866110e3565b945060208601356001600160401b0381111561150257600080fd5b61150e8882890161131c565b94505061151e87604088016110d2565b925061152d87608088016110d2565b9497939650919460c0013592915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561157c57600080fd5b81356004811061106357600080fd5b604080519081016001600160401b03811182821017156115ad576115ad61153e565b60405290565b600082601f8301126115c457600080fd5b604051604081018181106001600160401b03821117156115e6576115e661153e565b80604052508060408401858111156115fd57600080fd5b845b8181101561161e57611610816110e3565b8352602092830192016115ff565b509195945050505050565b60006080828403121561163b57600080fd5b604051604081018181106001600160401b038211171561165d5761165d61153e565b604052601f8301841361166f57600080fd5b61167761158b565b80604085018681111561168957600080fd5b855b818110156116a357803584526020938401930161168b565b508184526116b187826115b3565b6020850152509195945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818114156116f4576116f46116c1565b6001019392505050565b634e487b7160e01b600052600160045260246000fd5b604081833760006040838101828152908301915b6002811015611757576001600160401b03611742846110e3565b16825260209283019290910190600101611728565b5050505050565b610100810161176d8285611714565b6110636080830184611714565b600060208083528351808285015260005b818110156117a75785810183015185820160400152820161178b565b818111156117b9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6004811061077657610776611235565b602081016118388361181b565b91905290565b6000606082018583526020858185015260606040850152818551808452608086019150828701935060005b8181101561188557845183529383019391830191600101611869565b509098975050505050505050565b83815260006020848184015260408301845182860160005b828110156118c7578151845292840192908401906001016118ab565b50919897505050505050505056fea2646970667358221220a4a97df17b017071a1269c647e0480369f3eedc3962d37ab2007e00e3decae8e64736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
